Pagini recente » Cod sursa (job #291929) | Cod sursa (job #999324) | Cod sursa (job #1484293) | Cod sursa (job #689482) | Cod sursa (job #333083)
Cod sursa(job #333083)
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
#define MAX_N 1024
#define cor 0.00000001
int n, m, nr, sol;
struct punct {
int x;
int y;
} v[MAX_N];
double A[MAX_N * MAX_N];
void cit() {
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d %d", &v[i].x, &v[i].y);
}
inline double modul(double x) {
if (x >= 0) return x;
else return -x;
}
void solve() {
for (int i = 1; i < n; i++)
for (int j = i + 1; j <= n; j++)
if (v[i].y != v[j].y)
A[++m] = 1.0 * (v[i].x - v[j].x) / (v[i].y - v[j].y);
else A[++m] = 2147000000;
sort(A + 1, A + m + 1);
int i = 1;
while (i <= m) {
int j = i;
while (modul(A[j] - A[i]) < cor && j <= m)
j++;
if (j != i) j--;
int nr = j - i + 1;
sol = sol + nr * (nr - 1) / 2;
i = j + 1;
}
printf("%d\n", sol);
}
int main() {
cit();
solve();
return 0;
}