Cod sursa(job #915011)
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAX 1001
struct punct
{
int x , y;
}P[MAX];
struct panta
{
int nr , num , poz;
}M[MAX*MAX];
int N , k ;
bool comp(panta A , panta B)
{
return A.nr*B.num < A.num*B.nr;
}
long sol;
void citire();
void solve();
void tipar();
int main()
{
citire();
solve();
tipar();
return 0;
}
void citire()
{
freopen("trapez.in" , "r" , stdin );
scanf("%d" , &N);
for( int i = 1 ; i <= N ; ++i )
scanf("%d%d" , &P[i].x , &P[i].y);
}
void solve()
{
for( int i = 1 ; i< N ; ++i )
for( int j = i+1 ; j <= N ; ++j )
{
M[++k].nr = P[i].y-P[j].y;
M[k].num = P[i].x-P[j].x;
}
sort(M+1,M+k+1,comp);
int k =1;
for(int i = 2 ; i <= N*N ; ++i )
{
if(M[i-1].nr*M[i].num == M[i-1].num * M[i].nr)k++;
else
{
sol+=k*(k-1)/2;
k = 1;
}
}
}
void tipar()
{
freopen("trapez.out" , "w" , stdout );
printf("%ld\n" , sol);
}