Pagini recente » Cod sursa (job #2216237) | Cod sursa (job #1154883) | Rating DALALAU AEXANDRU (SILVER_BOY) | Istoria paginii runda/sin | Cod sursa (job #371246)
Cod sursa(job #371246)
#include <cstdio>
#include <algorithm>
#define EPS 0.00000000000001
#define LMAX 1010
#define INF 2000000100
using namespace std;
struct punct
{
int x, y;
} v[LMAX];
double m[LMAX*LMAX];
int n, l, sol;
int cmp(double a, double b)
{
return a+EPS<b;
}
double modul(double a)
{
if (a<0) a=-a;
return a;
}
int main()
{
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d",&n);
int i, j;
for (i=1; i<=n; i++) scanf("%d %d",&v[i].x,&v[i].y);
for (i=1; i<=n; i++)
for (j=i+1; j<=n; j++)
{
l++;
if (v[j].y==v[i].y) m[l]=INF; else
m[l]=double(v[j].x-v[i].x)/double(v[j].y-v[i].y);
}
sort(m+1, m+l+1, cmp);
int c;
for (i=1; i<=l; i++)
{
for (j=i; j<l && modul(m[j+1]-m[j])<=EPS; j++);
c=j-i+1;
sol+=c*(c-1)/2;
i=j;
}
printf("%d",sol);
}