Cod sursa(job #2740373)

Utilizator hhhhhhhAndrei Boaca hhhhhhh Data 12 aprilie 2021 18:55:26
Problema Trapez Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
typedef long long ll;
typedef pair<int,int> pii;
ll n,lines,ans,nrx,nry;
ll f[1005][1005];
map<ll,ll> normx,normy;
struct point
{
    int x,y;
} v[1005];
pii getval(point a, point b)
{
    if(a.x<b.x)
        swap(a,b);
    ll x=a.x-b.x;
    ll y=a.y-b.y;
    ll gcd=__gcd(abs(x),abs(y));
    x/=gcd;
    y/=gcd;
    return {x,y};
}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i].x>>v[i].y;
        /*if(normx[v[i].x]==0)
        {
            nrx++;
            normx[v[i].x]=nrx;
        }
        if(normy[v[i].y]==0)
        {
            nry++;
            normy[v[i].y]=nry;
        }
        v[i].x=normx[v[i].x];
        v[i].y=normy[v[i].y];*/
    }
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
            f[getval(v[i],v[j]).first][getval(v[i],v[j]).second]++;
    for(int i=0;i<=1000;i++)
        for(int j=0;j<=1000;j++)
            ans=(ans+f[i][j]*(f[i][j]-1)/2);
    fout<<ans;
    return 0;
}