Pagini recente » Cod sursa (job #110897) | Cod sursa (job #2228645) | Cod sursa (job #1117544) | Istoria paginii runda/cex_ph_2 | Cod sursa (job #1448047)
#include <stdio.h>
#include <algorithm>
#include <math.h>
#define MAX_N 1000
#define INF 2000000000
#define EPS 1e-14
typedef struct {
int x, y;
} point;
double slopes[MAX_N * (MAX_N - 1) / 2];
int main(void) {
FILE *f = fopen("trapez.in", "r");
point v[MAX_N];
int n;
int nSlopes;
int cnt;
fscanf(f, "%d", &n);
for (int i = 0; i < n; i++) {
fscanf(f, "%d%d", &v[i].x, &v[i].y);
}
fclose(f);
nSlopes = 0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
slopes[nSlopes++] = (v[i].x == v[j].x) ? (INF + 1) : 1.00 * (v[j].y - v[i].y) / (v[j].x - v[i].x);
}
}
std::sort(slopes, slopes + nSlopes);
cnt = 0;
int i = 0;
do {
int j = i + 1;
while (j < nSlopes && fabs(slopes[i] - slopes[j]) < EPS) {
j++;
}
cnt += (j - i) * (j - i - 1) / 2;
i = j;
} while (i < nSlopes);
f = fopen("trapez.out", "w");
fprintf(f, "%d\n", cnt);
fclose(f);
return 0;
}