Pagini recente » Cod sursa (job #1041876) | Cod sursa (job #1452446) | Cod sursa (job #1233181) | Cod sursa (job #2163956) | Cod sursa (job #1981392)
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
struct point
{
int x,y;
};
point v[1005];
const double infinit = 2000000005;
const double eps = 1.e-14;
vector <double> p;
double panta(point a,point b)
{
if(abs(a.x - b.x) < eps)
return infinit;
else
return (1.0 * b.y - a.y) / (b.x - a.x);
}
int main()
{
freopen("trapez.in", "r",stdin);
freopen("trapez.out", "w",stdout);
int i,n;
scanf("%d", &n);
for(i = 1;i <= n;i++)
scanf("%d%d", &v[i].x, &v[i].y);
int j;
for(i = 1;i < n;i++)
for(j = i + 1;j <= n;j++)
p.push_back(panta(v[i],v[j]));
sort(p.begin(),p.end());
int f,s = 0;
double m;
m = p[0];
f = 1;
for(i = 1;i < p.size();i++)
{
if(p[i] > m)
{
s += (f * (f - 1)) / 2;
m = p[i];
f = 1;
}
else if(p[i] == m)
f++;
}
s += (f * (f - 1)) / 2;
printf("%d",s);
return 0;
}