Pagini recente » Cod sursa (job #688688) | Cod sursa (job #2166849) | Cod sursa (job #69783) | Cod sursa (job #28132) | Cod sursa (job #58657)
Cod sursa(job #58657)
#include <cstdio>
#include <algorithm>
#define MAX 500001
#define MAXN 1001
#define INF 2100000000
#define e 0.000000000000001
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].x == V[j].x) P[k++]=INF;
else P[k++]=(V[i].y - V[j].y) / (V[i].x - V[j].x);
}
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;
}