Pagini recente » Cod sursa (job #3207836) | Cod sursa (job #1273603) | Cod sursa (job #946860) | Cod sursa (job #1549429) | Cod sursa (job #1033602)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
const long double eps = 1e-9;
struct point{
long double x, y;
point(){};
};
point gv[1005];
vector<long double> t;
long double ffabs(long double x){
if(x < 0)
return -x;
return x;
}
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(ffabs(t[i] - t[i - 1]) < eps)
++evil;
else{
ans += evil * (evil - 1) / 2;
evil = 1;
}
ans += evil * (evil - 1) / 2;
out << ans;
return 0;
}