Pagini recente » Cod sursa (job #1776634) | Istoria paginii runda/max_min/clasament | Cod sursa (job #553294) | Istoria paginii runda/muntele_suferintei_1 | Cod sursa (job #1850263)
#include <iostream>
#include <fstream>
#include <algorithm>
#define infinit 2000000001
#define m 1001
using namespace std;
long long nrp;
double pante[m * m];
int x[m], y[m];
int main()
{
ifstream f("trapez.in");
ofstream g("trapez.out");
int nr, j, i, k = 0, n;
f>>n;
for(i = 0 ; i < n ; i++){
f>>x[i]>>y[i];
}
for(i = 0; i < n-1; i++)
for(j = i + 1; j < n; j++){
if(y[i] == y[j]) pante[k++] = infinit;
else pante[k++] = (double) (x[i] - x[j])/(y[i] - y[j]);
}
sort(pante, pante + k);
for(i = 0 ; i < k ; i++){
nr = 1;
while(i < k - 1 && pante[i] == pante[i+1]){
nr++;
i++;
}
nrp += (long long) nr*(nr - 1) / 2;
}
g << nrp <<"\n";
f.close();
g.close();
return 0;
}