Pagini recente » Cod sursa (job #533128) | Cod sursa (job #1662900) | Cod sursa (job #868894) | Cod sursa (job #2344301) | Cod sursa (job #915059)
Cod sursa(job #915059)
#include<cstdio>
#include<algorithm>
using namespace std;
#define MAX 1001
struct punct
{
long x , y;
}P[MAX];
struct panta
{
long nr , num ;
}M[MAX*MAX];
int N , k ;
bool comp(panta A , panta B)
{
if(A.nr*B.num == A.num*B.nr)return 0;
bool r = A.nr*B.num < A.num*B.nr;
if(A.num < 0) r = !r;
if(B.num < 0) r = !r;
return r;
}
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("%ld%ld" , &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].x-P[j].x;
M[k].num = P[i].y-P[j].y;
}
sort(M+1,M+k+1,comp);
int p =1;
for(int i = 2 ; i <= k ; ++i )
{
if(1ll*(M[i-1].nr*M[i].num) == 1ll*(M[i-1].num * M[i].nr))p++;
else
{
sol+=p*(p-1)/2;
p = 1;
}
}
sol+=p*(p-1)/2;
}
void tipar()
{
freopen("trapez.out" , "w" , stdout );
printf("%ld\n" , sol);
}