Cod sursa(job #343787)
#include<cstdio>
#include<algorithm>
using namespace std;
#define N 1024
#define M 500501
struct trapez{long long x,y;}v[N],p[M];
short int n;
long long num=0;
bool b[M];
bool compar(const long long &a, const long long &b)
{return a<b;}
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 ireductibil(long long &x, long long &y)
{
long long d=2;
while (d*d<=x&&d*d<=y&&x!=-1&&x!=1&&y!=-1&&y!=1)
{
while (x%d==0&&y%d==0)
{
x/=d;
y/=d;
}
++d;
}
}
void gasesc()
{
for (int i=1; i<=n; ++i)
for (int j=i+1; j<=n; ++j)
{
p[++num].y=v[i].y-v[j].y;
p[num].x=v[i].x-v[j].x;
ireductibil(p[num].y,p[num].x);
}
n=num;
num=0;
for (int i=1;i<n; ++i)
{
for (int j=i+1; j<=n; ++j)
if (p[i].x*p[j].y==p[j].x*p[i].y)
++num;
}
printf("%lld",num);
}
int main()
{
citire();
gasesc();
return 0;
}