Pagini recente » Cod sursa (job #2695420) | Cod sursa (job #2111024) | Cod sursa (job #2042088) | Cod sursa (job #2936307) | Cod sursa (job #2241162)
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iostream>
#define dif 0.0000000000001
#define Nmax 1005
#define pp 1e10
using namespace std;
string file="trapez";
ifstream f( (file + ".in").c_str() );
ofstream g( (file + ".out").c_str() );
struct point{
int x, y;
}a[Nmax];
int n, ans, cnt;
double v[Nmax*Nmax];
double slope(int x1, int y1, int x2, int y2)
{
if(fabs(x2-x1)<dif)
return pp;
double ans=(double)(y2-y1)/(x2-x1);
return ans;
}
bool equal(int i, int j)
{
if (v[i] - v[j] < dif)
return 1;
else
return 0;
}
int main()
{
f >> n;
for ( int i = 1; i <= n; i ++ )
f >> a[i].x >> a[i].y;
for ( int i = 1; i <= n; i ++ )
for ( int j = i + 1; j <= n; j ++ )
v[++cnt]=slope(a[i].x, a[i].y, a[j].x, a[j].y);
sort(v+1, v+cnt+1);
int eq = 1;
for (int i = 2; i <= cnt; i ++)
if (equal(i,i-1) == 1)
eq ++;
else
{
ans += eq * (eq - 1) / 2;
eq = 1;
}
ans += eq * (eq - 1) / 2;
g << ans;
return 0;
}