Pagini recente » Cod sursa (job #2429629) | Cod sursa (job #2786067) | Cod sursa (job #2128761) | Cod sursa (job #1376060) | Cod sursa (job #1151710)
#include <stdio.h>
#define NMAX 1001
#define MMAX 500000
#include <algorithm>
using namespace std;
bool cm (double a, double b) {
return a < b;
}
double v[MMAX];
int main() {
int N, i, j, a, b, vert = 0, oriz = 0, sol = 0, temp;
double pt;
int x[NMAX], y[NMAX];
freopen ("trapez.in", "r", stdin);
freopen ("trapez.out", "w", stdout);
scanf ("%d", &N);
for (i = 1; i <= N; ++i)
scanf ("%d %d", &x[i], &y[i]);
int count = -1;
for (i = 1; i < N; ++i)
for (j = i + 1; j <= N; ++j) {
a = x[i] - x[j];
b = y[i] - y[j];
if (a != 0) {
if (b == 0) ++oriz;
else {
pt = b/(double)a;
v[++count] = pt;
}
}
if (a == 0) ++vert;
}
sort (v, v + count, cm);
temp = 1;
for (i = 1; i < count; ++i) {
if (v[i] == v[i-1])
++temp;
else {
sol += temp*(temp-1)/2;
temp = 1;
}
}
sol += vert*(vert-1)/2;
sol += oriz*(oriz-1)/2;
printf ("%d", sol);
return 0;
}