Mai intai trebuie sa te autentifici.
Cod sursa(job #2388806)
Utilizator | Data | 26 martie 2019 15:00:23 | |
---|---|---|---|
Problema | Trapez | Scor | 10 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.91 kb |
#include<bits/stdc++.h>
#define x first
#define y second
#define pii pair<int,int>
#define N 1030
#define int long long
using namespace std;
pii a[N], c[N];
int n,k,k1,k2,rs;
void getp(int i, int j) {
c[++k]={a[j].y-a[i].y, a[j].x-a[i].x};
int gcd=__gcd(abs(c[k].x), abs(c[k].y));
if (gcd==0) {
--j; return;
}
c[k].x/=gcd; c[k].y/=gcd;
}
int32_t main() {
ifstream cin("trapez.in");
ofstream cout("trapez.out");
cin>>n;
for (int i=1; i<=n; ++i) {
cin>>a[i].x>>a[i].y;
}
for (int i=1; i<=n; ++i) {
for (int j=i+1; j<=n; ++j) {
getp(i,j);
}
}
sort(c+1,c+1+k);
int k2=1; c[k+1]={-1e9,0};
for (int i=2; i<=k+1; ++i) {
if (c[i].x==c[i-1].x && c[i].y==c[i-1].y) ++k2;
else {
rs+=k2*(k2-1)/2;
k2=1;
}
}
cout<<rs;
return 0;
}