Pagini recente » Cod sursa (job #2113558) | Cod sursa (job #2565940) | Cod sursa (job #1844741) | Cod sursa (job #296548) | Cod sursa (job #2616997)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct coord {
int x;
int y;
} coordonate[1001];
int main() {
std::ifstream f("trapez.in");
std::ofstream g("trapez.out");
int n;
f >> n;
float panta[n*(n-1)/2];
int k = 0;
for(int i = 0; i < n; i++)
f >> coordonate[i].x >> coordonate[i].y;
int v = 0;
int o = 0;
for(int i = 0; i < n-1; i++) {
for (int j = i + 1; j < n; j++) {
int dx = coordonate[j].x - coordonate[i].x;
int dy = coordonate[j].y - coordonate[i].y;
if(dx == 0)
v ++;
else if(dy == 0)
o++;
else {
if(coordonate[j].x > coordonate[i].x)
panta[k] = ((float)(coordonate[j].y - coordonate[i].y) / (float)(coordonate[j].x - coordonate[i].x));
else
panta[k] = ((float)(coordonate[i].y - coordonate[j].y) / (float)(coordonate[i].x - coordonate[j].x));
k++;
}
}
}
sort(panta, panta+k);
int nr = 1;
int sol = v*(v - 1)/2 + o*(o-1)/2;
for(int i = 0; i < k-1; i++) {
if (panta[i] == panta[i + 1]) {
nr++;
}
else {
sol += nr * (nr - 1) / 2;
nr = 1;
}
}
g << sol;
f.close();
g.close();
return 0;
}