Pagini recente » Cod sursa (job #992607) | Cod sursa (job #2600943) | Cod sursa (job #1773357) | Cod sursa (job #2040518) | Cod sursa (job #284643)
Cod sursa(job #284643)
#include<stdio.h>
#define inf 99999999
double p[2000001];
long long x[1001],y[1001];
int nr,n;
void quick(long li, long ls)
{
long i,j; double x,y;
i=li; j=ls; x=p[(li+ls)/2];
while (i<=j)
{
while (p[i]<x) i++;
while (p[j]>x) j--;
if (i<=j)
{
y=p[i]; p[i]=p[j]; p[j]=y;
i++; j--;
}
}
if (i<ls) quick(i,ls);
if (j>li) quick(li,j);
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
int i,j;
for(i=1;i<=n;i++)
scanf("%lld %lld",&x[i],&y[i]);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{
if(x[j]-x[i]==0)
p[++nr]=0;
else if(y[j]-y[i]==0)
p[++nr]=inf;
else p[++nr]=(double)(y[j]-y[i])/(x[j]-x[i]);
}
quick(1,nr);
long long fin=0;
for(i=1;i<=nr;i++)
{int nrr=1;
while(p[i]==p[i+1]&&i<=nr)
{nrr++;i++;}
fin+=(nrr*(nrr-1))/2;
}
printf("%lld",fin);
return 0;
}