Pagini recente » Cod sursa (job #1809260) | Cod sursa (job #923474) | Cod sursa (job #1408242) | Cod sursa (job #259313) | Cod sursa (job #1142855)
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const double eps=1.e-14;
const double inf=2000000100;
struct point
{
double x, y;
};
point a[1005];
double l[1000010];
bool vertical(point a, point b)
{
return fabs(a.x-b.x)<eps;
}
double panta(point a, point b)
{
if(vertical(a, b))return inf;
return (b.y-a.y)/(b.x-a.x);
}
bool egal(double a, double b)
{
return fabs(a-b)<eps;
}
int main()
{
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
int n;
scanf("%d", &n);
for(int i=0;i<n;i++)
{
double x, y;
scanf("%lf%lf", &x, &y);
a[i].x=x;a[i].y=y;
}
int k=0;
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
{
l[k++]=panta(a[i], a[j]);
}
sort(l, l+k);
int nrpr=0, nr=1;
for(int i=0;i<k-1;i++)
{
if(egal(l[i], l[i+1]))nr++;
else
{
nrpr+=(nr*(nr-1)/2);
nr=1;
}
}
nrpr+=(nr*(nr-1)/2);
printf("%d", nrpr);
return 0;
}