Pagini recente » Cod sursa (job #2731754) | Cod sursa (job #257479) | Cod sursa (job #2090737) | Cod sursa (job #2570077) | Cod sursa (job #2771807)
#include <fstream>
#include <cmath>
#include <vector>
#include <algorithm>
#include <map>
#include <string>
#include <bitset>
#define pb(a) push_back(a)
#pragma GCC optimize("Ofast")
using namespace std;
ifstream cin("trapez.in");
ofstream cout("trapez.out");
struct point{
int x, y;
}v[1001];
struct functie{
double a, b;
}f[1001 * 1001];
int n, p = 1, x, y;
bool cmp(functie n, functie m){
if((double) -n.a / n.b < (double) -m.a / m.b){
return true;
}
else if((double) -n.a / n.b == (double) -m.a / m.b && n.a < m.a){
return true;
}
else if((double) -n.a / n.b == (double) -m.a / m.b && n.a == m.a && n.b < m.b){
return true;
}
return false;
}
int main(){
cin >> n;
for(int i = 1; i <= n; ++i){
cin >> x >> y;
v[i].x = x;
v[i].y = y;
}
for(int i = 1; i < n; ++i){
for(int j = i + 1; j <= n; ++j){
double n, m;
n = v[i].y - v[j].y;
m = v[j].x - v[i].x;
f[p].a = n;
f[p].b = m;
p++;
}
}
p--;
sort(f + 1, f + p + 1, cmp);
int ans = 0, cnt = 0;
for(int i = 1; i < p; ++i){
if(-f[i].a / f[i].b == -f[i + 1].a / f[i + 1].b){
cnt++;
}
else{
ans += cnt;
cnt = 0;
}
}
cout << ans;
return 0;
}