Pagini recente » Cod sursa (job #1257616) | Cod sursa (job #9228) | Cod sursa (job #1897710) | Cod sursa (job #2326908) | Cod sursa (job #2824565)
#include <iostream>
#include <fstream>
#include <unordered_map>
#define pii pair <int, int>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
const int N = 1000;
pii puncte[N + 1];
unordered_map <double, int> umap;
double panta(pii a, pii b){
if(a.second - b.second == 0) return -1;
double x1 = a.first, x2 = b.first, y1 = a.second, y2 = b.second;
return ( (double)((x1 - x2) / (y1 - y2)) );
}
int main(){
int n;
fin >> n;
for(int i = 0; i < n; i++) fin >> puncte[i].first >> puncte[i].second;
for(int i = 0; i < n; i++)
for(int j = i + 1; j < n; j++)
umap[panta(puncte[i], puncte[j])]++;
int ans = 0;
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
int nr = umap[panta(puncte[i], puncte[j])];
cout << ">>> " << i << " " << j << " " << nr << endl;
ans += nr * (nr - 1) / 2; // Combinat de nr luate cate 2 aka suma gauss pt (n - 1)
umap[panta(puncte[i], puncte[j])] = 1;
}
}
fout << ans;
return 0;
}