Pagini recente » Cod sursa (job #3211244) | Cod sursa (job #2561435) | Cod sursa (job #437043) | Cod sursa (job #1730749) | Cod sursa (job #1736621)
#include <bits/stdc++.h>
#define NMax 1005
#define INF std::numeric_limits<double>::max();
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct drepte{
double a;
};
drepte dr[NMax * NMax];
int n,nr,ans,in;
double x[NMax],y[NMax];
bool cmp(drepte x, drepte y){
if(x.a > y.a)
return 1;
return 0;
}
int main()
{
f >> n;
for(int i = 1; i <= n; ++i){
f >> x[i] >> y[i];
}
for(int i = 1; i <= n; ++i){
for(int j = i + 1; j <= n; ++j){
if(x[i] - x[j] == 0){
++in;
}else{
dr[++nr].a = (double)(y[j] - y[i]) / (x[j] - x[i]);
}
}
}
sort(dr + 1, dr + 1 + nr, cmp);
int part = 0;
ans += ((in * (in - 1))/2);
for(int i = 2; i <= nr; ++ i){
if(dr[i].a == dr[i - 1].a){
part++;
}else{
ans += ((part * (part - 1)) / 2);
part = 1;
}
}
ans += ((part * (part - 1)) / 2);
g << ans << '\n';
return 0;
}