Pagini recente » Cod sursa (job #995099) | Cod sursa (job #156835) | Cod sursa (job #1902050) | Cod sursa (job #2562041) | Cod sursa (job #1339619)
#include<fstream>
#include<algorithm>
#include<cmath>
#include<limits>
using namespace std;
typedef double var;
const var eps = 1e-10;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
struct Punct{var x, y;};
Punct PUNCTE[1001];
var PANTA[800001];
bool cmp(var a, var b) {
return a>b;
}
int main() {
var n;
fin>>n;
for(int i=1; i<=n; i++) {
fin>>PUNCTE[i].x>>PUNCTE[i].y;
}
int dr = 0;
for(int i=1; i<n; i++) {
for(int j=i+1; j<=n; j++) {
Punct a = PUNCTE[i];
Punct b = PUNCTE[j];
if(a.x>b.x) swap(a, b);
if(b.x==a.x) {
PANTA[++dr] = numeric_limits<var>::max();
continue;
}
PANTA[++dr] = (b.y-a.y)/(b.x-a.x);
}
}
sort(PANTA+1, PANTA+dr+1, cmp);
int e, count=0;
int c;
for(int i=1; i<dr; i++) {
c=1;
e=i+1;
while(abs(PANTA[e]-PANTA[i])<eps) {
c++;
e++;
}
count += c*(c-1)/2;
i=e-1;
}
fout<<count;
return 0;
}