Mai intai trebuie sa te autentifici.
Cod sursa(job #1850254)
Utilizator | Data | 18 ianuarie 2017 13:51:51 | |
---|---|---|---|
Problema | Trapez | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.86 kb |
#include <iostream>
#include <fstream>
#include <algorithm>
#define infinit 2000000001
#define size 1001
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct punct{
int x;
int y;
};
long long nrp;
double pante[size * size];
punct p[size];
int main()
{
int q, j, i, k = 0, n;
long long nr = 0;
f>>n;
for(i = 0 ; i < n ; i++){
f>>p[i].x>>p[i].y;
}
for(i = 0; i < n-1; i++)
for(j = i + 1; j < n; j++){
if(p[i].y == p[j].y) pante[k++] = infinit;
else pante[k++] = (double) (p[i].x - p[j].x)/(p[i].y - p[j].y);
}
sort(p, p + k);
for(i = 0 ; i < k ; i++){
q = 1;
while(i < k - 1 && pante[i] == pante[i+1]){
q++;
i++;
}
nrp += (long long) q*(q - 1) / 2;
}
g << nrp <<"\n";
f.close();
g.close();
return 0;
}