Pagini recente » Cod sursa (job #183430) | Cod sursa (job #950482) | Cod sursa (job #596032) | Cod sursa (job #2033318) | Cod sursa (job #58640)
Cod sursa(job #58640)
#include <cstdio>
#include <algorithm>
#define MAX 500001
#define MAXN 1001
#define INF 2100000000
#define e 0.0000000000001
using namespace std;
typedef long double LD;
struct punct{LD x, y;} V[MAXN];
LD P[MAX];
long long s;
int n;
int main( void )
{
freopen("trapez.in", "r", stdin);
scanf("%d\n", &n);
int i;
for(i=1;i<=n;++i)
scanf("%Lf %Lf\n", &V[i].x, &V[i].y);
freopen("trapez.out", "w", stdout);
int k=0;
int j;
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j)
{if(V[i].y - V[j].y ==0) P[k++]=INF;
else P[k++]=(V[i].x - V[j].x) / (V[i].y - V[j].y);
}
sort(P, P+k-1);
LD x=P[0];
int nr=1;
for(i=2;i<k;++i)
if(-e<P[i]-x && P[i]-x<e) nr++;
else {s+=nr*(nr-1)/2;
nr=1;
x=P[i];
}
s+=nr*(nr-1)/2;
printf("%lld\n", s);
return 0;
}