Pagini recente » Cod sursa (job #1504969) | Cod sursa (job #3190271) | Cod sursa (job #2883802) | Cod sursa (job #2805965) | Cod sursa (job #1899040)
#include <cstdio>
#include <algorithm>
using namespace std;
struct me{int x;int y;};
me v[1001],a[600001];
int cmpx(me a,me b)
{
if(a.x<b.x)
return 1;
if(a.x==b.x&&a.y<=b.y)
return 1;
return 0;
}
int cmpy(me a,me b)
{
if(a.y<b.y)
return 1;
if(a.y==b.y&&a.x<=b.x)
return 1;
return 0;
}
int cmprap(me a, me b)
{
if(a.x*b.y<=a.y*b.x)
return 1;
return 0;
}
int fx(int a)
{
if(a<0)
return -a;
return a;
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int n,i,nrl=0,nrc=0,cnt=0,j;
long long s;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].x,&v[i].y);
sort(&v[1],&v[n+1],cmpy);
for(i=2;i<=n;i++)
if(v[i].y==v[i-1].y)
nrc++;
sort(&v[1],&v[n+1],cmpx);
for(i=2;i<=n;i++)
if(v[i].x==v[i-1].x)
nrl++;
s=nrl*(nrl-1)/2+nrc*(nrc-1)/2;
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
if(v[i].x!=v[j].x&&v[i].y!=v[j].y)
{
cnt++;
a[cnt].x=fx(v[i].x-v[j].x)+1;
a[cnt].y=fx(v[i].y-v[j].y)+1;
}
sort(&a[1],&a[cnt+1],cmprap);
int l=1;
for(i=2;i<=cnt;i++)
{
if(a[i].x*a[i].y==a[i].y*a[i].x)
l++;
else
{
s+=l*(l-1)/2;
l=1;
}
}
printf("%lld",s);
return 0;
}