Pagini recente » Cod sursa (job #1279896) | Statistici Dubau Filip (filipdubau) | Cod sursa (job #329745) | Cod sursa (job #1403684) | Cod sursa (job #343774)
Cod sursa(job #343774)
#include<cstdio>
#define N 124
#define M 501
struct trapez{long long x,y;}v[N],p[M];
short int n;
long long num=0,dr=0,c,c1,par=0;
bool b[M];void citire()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%hd",&n);
for (short int i=1; i<=n; ++i)
scanf("%lld%lld",&v[i].x,&v[i].y);
}
void gasesc()
{
for (int i=1; i<=n; ++i)
for (int j=i+1; j<=n; ++j)
if (v[i].x!=v[j].x&&v[i].y!=v[j].y)
{
p[++num].y=v[i].y-v[j].y;
p[num].x=v[i].x-v[j].x;
}
else
if (v[i].x!=v[j].x)
++dr;
else
if (v[i].y!=v[j].y)
++par;
n=num;
num=1;
dr=dr*(dr-1)/2+par*(par-1)/2;
int i=1;
for ( i=1;i<n; ++i)
{
num=1;
for (int j=i+1; j<=n; ++j)
{
if (!b[j])
{
c=p[i].x/p[j].x;
if (c*p[j].x!=p[i].x)
{
c=p[j].x/p[i].x;
if (c*p[i].x!=p[j].x)
continue;
else
{
c1=p[j].y/p[i].y;
if (c*p[i].y==p[j].y&&c1==c)
{
++num;
b[j]=true;
}
}
}
else
{
c1=p[i].y/p[j].y;
if (c1*p[j].y==p[i].y&&c==c1)
{
++num;
b[j]=true;
}
}
}
}
dr+=(num-1)*num/2;
}
printf("%lld",dr);
}
int main()
{
citire();
gasesc();
return 0;
}