Pagini recente » Cod sursa (job #1271921) | Cod sursa (job #1175134) | Cod sursa (job #1685639) | Cod sursa (job #298009) | Cod sursa (job #474039)
Cod sursa(job #474039)
#include <stdio.h>
#include <stdlib.h>
#include <map>
#define MAXN 1000
FILE *f;
int n;
int x[MAXN], y[MAXN];
std::map<std::pair<int, int>, int> lines;
int main() {
f = fopen("trapez.in", "rt");
fscanf(f, "%d", &n);
for (int i = 0; i < n; ++i)
fscanf(f, "%d %d", x + i, y + i);
fclose(f);
for (int i = 0; i < n; ++i)
for (int j = i + 1; j < n; ++j) {
int dx = x[i] - x[j];
int dy = y[i] - y[j];
int a = abs(dx), b = abs(dy);
while (b) {
int r = a % b;
a = b; b =r;
}
dx /= a; dy /= a;
if (dx < 0) { dx *= -1; dy *= -1;}
++lines[std::make_pair(dx, dy)];
}
int res = 0;
for (std::map<std::pair<int, int>, int>::const_iterator
it = lines.begin(); it != lines.end(); ++it) {
int no = it->second;
res += no * (no - 1) / 2;
}
f = fopen("trapez.out", "wt");
fprintf(f, "%d\n", res);
fclose(f);
return 0;
}