Pagini recente » Cod sursa (job #1538050) | Cod sursa (job #1828931) | Cod sursa (job #2318306) | Cod sursa (job #510595) | Cod sursa (job #1033598)
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
const double eps = 1e-7;
struct point{
double x, y;
point(){};
};
point gv[1005];
vector<double> t;
int main(){
ifstream in("trapez.in");
ofstream out("trapez.out");
int n;
in >> n;
for(int i = 1; i <= n; ++i)
in >> gv[i].x >> gv[i].y;
long long evil = 0, ans = 0;
for(int i = 1; i <= n; ++i)
for(int j = i + 1; j <= n; ++j)
if(gv[i].y == gv[j].y)
++evil;
else
t.push_back((gv[i].x - gv[j].x) / (gv[i].y - gv[j].y));
sort(t.begin(), t.end());
ans = evil * (evil - 1) / 2;
evil = 1;
for(int i = 1; i < t.size(); ++i)
if(fabs(t[i] - t[i - 1]) < eps)
++evil;
else{
ans += evil * (evil - 1) / 2;
evil = 1;
}
ans += evil * (evil - 1) / 2;
out << ans;
return 0;
}