Pagini recente » Cod sursa (job #2630738) | Cod sursa (job #653949) | Cod sursa (job #794268) | Cod sursa (job #1759252) | Cod sursa (job #1330118)
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct eu{int x,y;};
eu v[1001];
struct eu2{int x,y;};
eu2 vc[1000001];
int n,i,j,k,l,m,cate,s;
bool sorting(eu2 a,eu2 b)
{
if(a.x<b.x||a.x==b.x&&a.y<b.y)
return 1;
return 0;
}
int cmmdc(int a,int b)
{
int r;
while(b!=0)
{
r=a%b;
a=b;
b=r;
}
return a;
}
int main ()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
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++)
{
cate++;
vc[cate].x=v[j].x-v[i].x;
vc[cate].y=v[j].y-v[i].y;
int h;
h=cmmdc(abs(vc[cate].x),abs(vc[cate].y));
vc[cate].x/=h;
vc[cate].y/=h;
}
sort(vc+1,vc+cate+1,sorting);
int k=0,nr=0;
for(i=1;i<=cate;i++)
{
if(vc[i].x==vc[i-1].x&&vc[i].y==vc[i-1].y||vc[i].x==0&&vc[i-1].x==0||vc[i].y==0&&vc[i-1].y==0)
nr++;
else
{
s+=nr*(nr-1)/2;
nr=1;
}
}
printf("%d",s);
return 0;
}