Pagini recente » Cod sursa (job #2417028) | Cod sursa (job #2726172) | Cod sursa (job #262697) | Cod sursa (job #297288) | Cod sursa (job #1662123)
#include <stdio.h>
#include <algorithm>
#include <cmath>
using namespace std;
const double eps=1.e-14;
const double inf=1e14;
struct point
{
int x,y;
}v[1001];
double m[500000];
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int n,i,j,k=0;
long long nr=0,l=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&(v[i].x),&(v[i].y));
}
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(v[i].x-v[j].x==0)
m[++k]=inf;
else m[++k]=(double)(v[i].y-v[j].y)/(v[i].x-v[j].x);
}
}
sort(m+1,m+k+1);
for(i=2;i<=k;i++)
{
if(fabs(m[i]-m[i-1])<eps) l++;
else
{
nr+=((long long)l*(l-1))>>1;
l=1;
}
}
nr+=((long long)l*(l-1))>>1;
printf("%lld",nr);
return 0;
}