Pagini recente » Cod sursa (job #2938767) | Cod sursa (job #1770741) | Cod sursa (job #3247033) | Cod sursa (job #1204206) | Cod sursa (job #2522333)
#include <bits/stdc++.h>
#define x first
#define y second
std::ifstream fin("trapez.in");
std::ofstream fout("trapez.out");
typedef long long ll;
ll n, sol, l, cnt=1;
std::pair<ll, ll> list[1005];
double lines[1000005];
double calc_m(std::pair<ll, ll> p1, std::pair<ll, ll> p2);
int main()
{
fin>>n;
for(int i=1; i<=n; ++i){
fin>>list[i].x>>list[i].y;
}
for(int i=1; i<n; ++i){
for(int j=i+1; j<=n; ++j){
lines[++l]=calc_m(list[i], list[j]);
}
}
std::sort(lines+1, lines+l+1, [&](double p1, double p2){
return p1<=p2;
});
for(int i=2; i<=l+1; ++i){
if(i==l+1 || lines[i]!=lines[i-1]){
sol=sol+(cnt-1)*cnt/2;
cnt=0;
}
++cnt;
}
fout<<sol;
return 0;
}
double calc_m(std::pair<ll, ll> p1, std::pair<ll, ll> p2){
return 1.0*(p2.y-p1.y)/(p2.x-p1.x);
}