Pagini recente » Cod sursa (job #102578) | Cod sursa (job #1663728) | Cod sursa (job #3141930) | Cod sursa (job #1094727) | Cod sursa (job #27033)
Cod sursa(job #27033)
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define maxn 1024
#define eps 0.000000001
long x[maxn],y[maxn];
long double v[maxn*maxn];
int sort(const void *a, const void *b)
{
if ((*(long double *)a - *(long double *) b)>0) return 1;
return -1;
}
long double panta(long a,long b)
{
long xx = y[b]-y[a];
long yy = x[a]-x[b];
if(yy==0) return +723.35;
return (long double)xx/yy;
}
int aprox(long double a,long double b)
{if(a>=b && a -b<eps || b>=a && b-a <eps) return 1;
return 0;
}
int main()
{
freopen("trapez.in","rt",stdin);
freopen("trapez.out","wt",stdout);
long n,s=0,i,j,nr=0,m;
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%ld%ld",&x[i],&y[i]);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
v[++nr]=panta(i,j);
qsort(v+1,nr,sizeof(v[0]),sort);
v[0]=-4354;
m=1;
for(i=1;i<=nr;i++)
{
if( aprox(v[i],v[i-1]) )
m++;
else {s+=m*(m-1)/2;m=1;}
}
printf("%ld\n",s);
return 0;
}