Pagini recente » Istoria paginii runda/concurs_nou-andrei/clasament | Istoria paginii runda/info-campioni | Istoria paginii runda/runda2014_14 | Cod sursa (job #1369097) | Cod sursa (job #2969445)
#include <bits/stdc++.h>
#define NMax 1000
#define NEDEF 10009
using namespace std;
ifstream in("trapez.in");
ofstream out("trapez.out");
int x[NMax], y[NMax], N, c;
vector<double> Pante;
int Comb(int n) {
return n*(n-1)/2;
}
void Read() {
in >> N;
for (int i = 0; i < N; ++i)
in >> x[i] >> y[i];
}
void Solve() {
double m;
for (int i = 0; i < N-1; ++i)
for (int j = i+1; j < N; ++j) {
if (x[j] == x[i]) m = NEDEF;
else m = (double)(y[j]-y[i])*1/(x[j]-x[i]);
Pante.push_back(m);
}
int lg = Pante.size();
sort(Pante.begin(), Pante.end());
long long int aux = 1, contor = 0;
for (int i = 1; i < lg; ++i) {
if (Pante[i] == Pante[i-1])
aux++;
else {
contor += Comb(aux);
aux = 1;
}
} contor += Comb(aux);
out << contor << '\n';
}
int main() {
Read();
Solve();
return 0;
}