Pagini recente » Cod sursa (job #2941021) | Cod sursa (job #730291) | Cod sursa (job #538594) | Cod sursa (job #2819256) | Cod sursa (job #2091911)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 1010;
int n,nr;
long long suma;
pair<int,int> cord[NMAX];
int nr_pante;
struct coord
{
long long numarator,numitor;
} vec[4000000];
void read()
{
freopen("trapez.in","r",stdin);
scanf("%d",&n);
int a,b;
for(int i = 0 ; i < n ; i++)
{
scanf("%d %d",&a,&b);
cord[i].first = a;
cord[i].second = b;
}
}
bool cmp(coord a, coord b)
{
if(b.numitor*a.numarator < b.numarator*a.numitor)
return 1;
return 0;
}
void pante()
{
int al_de_sus,al_de_jos;
for(int i = 0 ; i < n - 1; i++)
{
for(int j = i + 1 ; j < n ; j++)
{
if(cord[i].first - cord[j].first== 0)
{
nr++;
continue;
}
al_de_sus = cord[j].second - cord[i].second;
al_de_jos = cord[j].first - cord[i].first;
if(al_de_jos < 0)
{
al_de_sus*= -1;
al_de_jos*= -1;
}
vec[nr_pante].numitor = al_de_jos;
vec[nr_pante].numarator = al_de_sus;
nr_pante++;
}
}
sort(vec,vec+nr_pante,cmp);
}
void result()
{
long long aux = 1;
for(int i = 1 ; i < nr_pante; i++)
{
if((vec[i].numitor*vec[i-1].numarator)==(vec[i].numarator*vec[i-1].numitor))
{
aux++;
}
else
{
suma += aux*(aux-1)/2 ;
aux = 1;
}
}
suma+=aux*(aux-1)/2;
suma+=nr*(nr-1)/2;
}
int main()
{
read();
pante();
result();
freopen("trapez.out","w",stdout);
printf("%lld",suma);
return 0;
}