Cod sursa(job #761982)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
#define INX 2147000000
struct punct {
int x,y;
};
punct a[1001];
double v[1000001];
int main ()
{
int n,i,j,nr,l,x;
double p;
ifstream f("trapez.in");
ofstream g("trapez.out");
f>>n;
for(i=1;i<=n;i++)
f>>a[i].x>>a[i].y;
f.close();
l=0;
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++) {
if(a[j].x==a[i].x)
p=INX;
else p=(double)((double)a[j].y-a[i].y)/((double)a[j].x-a[i].x);
l++;
v[l]=p;
}
sort(v+1,v+l+1);
nr=0;
x=1;
for(i=1;i<=l-1;i++)
if(v[i]==v[i+1])
x++;
else {
nr=nr+x*(x-1)/2;
x=1;
}
if(x>=2)
nr=nr+x*(x-1)/2;
g<<nr;
return 0;
}