Pagini recente » Cod sursa (job #2791880) | Cod sursa (job #2534041) | Cod sursa (job #2048909) | Cod sursa (job #820928) | Cod sursa (job #350643)
Cod sursa(job #350643)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#define maxN 1010
#define x first
#define y second
#define er 0.0000000001
using namespace std;
pair <int, int> coord[maxN];
int N, k;
double panta[maxN * maxN];
double myabs( double a) {
if (a < 0) return -a;
return a;
}
int main(){
int k = 0, i, j, s = 0, t = 1;
freopen("trapez.in","r",stdin);
freopen("trapez.out","w",stdout);
scanf("%d", &N);
for (i = 1; i <= N; ++ i)
scanf("%d%d", &coord[i].x, &coord[i].y);
for (i = 1; i < N; ++ i)
for (j = i + 1; j <= N; ++ j){
++ k;
if (coord[j].y != coord[j].x)
panta[k] = 1.0 * (coord[i].x - coord[j].x) / (coord[i].y - coord[j].y);
else
panta[k] = 1.0 * 2147000000 * 10000;
/* panta[k].x = coord[j].x - coord[i].x;
panta[k].y = coord[j].y - coord[i].y;
if (panta[k].x < 0 && panta[k].y < 0) {
panta[k].x = - panta[k].x;
panta[k].y = - panta[k].y;
}*/
}
sort (panta + 1, panta + k + 1);
/*for (i = 1; i <= k; ++ i)
printf("%d %d\n", panta[i].x, panta[i].y);*/
t = 1;
for (i = 1; i < k; ++ i){
if (myabs(panta[i] - panta[j]) < er)
++ t;
else {
s += t * (t - 1) / 2;
t = 1;
}
}
s += t * (t - 1) / 2;
printf("%d\n", s);
return 0;
}