Pagini recente » Cod sursa (job #109589) | Cod sursa (job #813610) | Cod sursa (job #897087) | Cod sursa (job #239855) | Cod sursa (job #2296026)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
const int N = 1001;
struct punct {
int x, y;
};
punct p[N];
double m[N * N];
int n, cnt;
void citire () {
f >> n;
for(int i = 1; i <= n; i ++)
f >> p[i].x >> p[i].y;
for(int i = 1; i < n; i ++)
for(int j = i + 1; j <= n; j ++)
m[++ cnt] = (double)(p[j].x - p[i].x) / (p[j].y - p[i].y);
}
int numardrepte () {
int rez = 0, i = 1;
while(i <= cnt) {
int k = 1;
while(i < cnt && m[i] == m[i + 1]) {
k ++;
i ++;
}
rez += k * (k - 1) / 2;
i ++;
}
return rez;
}
int main()
{
citire ();
sort (m + 1, m + cnt + 1);
g << numardrepte ();
return 0;
}