Pagini recente » Cod sursa (job #1081874) | Cod sursa (job #2632617) | Cod sursa (job #1180406) | Istoria paginii utilizator/ucv_nicola_radulescu_vladutu | Cod sursa (job #1668020)
#include <fstream>
#include <cmath>
#include <algorithm>
#include <iomanip>
#define inf 1e17
#define eps 0.000000000000000001
#define NMAX 1005
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int x[NMAX], y[NMAX], i, j, ans = 0, cont = 0, n;
double panta[NMAX * NMAX];
bool cmp(double a, double b)
{
return a - b < eps;
}
int main()
{
f >> n;
for (i = 1; i <= n; ++ i)
f >> x[i] >> y[i];
for (i = 1; i <= n - 1; ++ i)
for (j = i + 1; j <= n; ++ j)
if (x[i] == x[j])
panta[++ cont] = (double) inf;
else
panta[++ cont] = (double) (y[i] - y[j]) / (x[i] - x[j]);
sort(panta + 1, panta + cont + 1, cmp);
int curr = 1;
for (i = 2; i <= n; ++ i)
if (panta[i] - panta[i - 1] < eps)
curr ++;
else
{
ans += curr * (curr - 1) / 2;
curr = 1;
}
ans += curr * (curr - 1) / 2;
g << ans << '\n';
return 0;
}