Pagini recente » Cod sursa (job #947098) | Cod sursa (job #2942205) | Cod sursa (job #1274129) | Cod sursa (job #658918) | Cod sursa (job #2198884)
#include <cstdio>
using namespace std;
struct COORDINATES{
int x,y;
};
COORDINATES v[1001],aux;
struct ANGLE{
int x,y,f;
};
ANGLE f[1001];
int k=0;
void add(COORDINATES a)
{
int i,ok=0;
for(i=1;i<=k;i++)
if(a.x==f[i].x && a.y==f[i].y)
{
ok=1;
f[i].f++;
break;
}
else
if((a.x==0 && f[i].x==0) || (a.y==0 && f[i].y==0))
{
ok=1;
f[i].f++;
break;
}
if(ok==0)
{
f[++k].x=a.x;
f[k].y=a.y;
f[k].f=1;
}
}
int cmmdc(int a,int b)
{
int r;
if(a<0)
a=0-a;
if(b<0)
b=0-b;
if(b==0 || a==0)
return 1;
r=a%b;
while(r)
{
a=b;
b=r;
r=a%b;
}
return b;
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
int i,n,j,d,t=0;
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++)
{
aux.x=v[i].x-v[j].x;
aux.y=v[i].y-v[j].y;
d=cmmdc(aux.x,aux.y);
aux.x/=d;
aux.y/=d;
add(aux);
}
}
for(i=1;i<=k;i++)
{
if(f[i].f>1)
t+=(f[i].f*(f[i].f-1))/2;
}
printf("%d", t);
return 0;
}