Pagini recente » Cod sursa (job #2123672) | Cod sursa (job #2324460) | Cod sursa (job #2478467) | Cod sursa (job #615242) | Cod sursa (job #514362)
Cod sursa(job #514362)
#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
int x[1000001],y[1000001],z[1000001],aux[1000001],v[2][1001],n,p,s,c;
int cmp(int i,int j)
{
double ai=x[i]/(double)sqrt(x[i]*x[i]+y[i]*y[i]),aj=x[j]/(double)sqrt(x[j]*x[j]+y[j]*y[j]);
return ai<aj;
}
int main()
{
int i,j;
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;++i) scanf("%d%d",&v[0][i],&v[1][i]);
for (i=1;i<=n;++i)
for (j=i+1;j<=n;++j)
{
++c;
x[c]=v[0][i]-v[0][j];
y[c]=v[1][i]-v[1][j];
z[c]=c;
if (y[c]<0)
{
x[c]=-x[c];
y[c]=-y[c];
}
else if ((y[c]==0)&&(x[c]<0)) x[c]=-x[c];
}
sort(z+1,z+c+1,cmp);
for (i=1;i<=c;++i) aux[i]=x[z[i]];
for (i=1;i<=c;++i) x[i]=aux[i];
for (i=1;i<=c;++i) aux[i]=y[z[i]];
for (i=1;i<=c;++i) y[i]=aux[i];
for (i=2;i<=c;++i)
if (x[i]*y[i-1]==y[i]*x[i-1]) ++p;
else
{
s+=p*(p+1)/2;
p=0;
}
if (p) s+=p*(p+1)/2;
printf("%d",s);
return 0;
}