Cod sursa(job #1838556)

Utilizator proflaurianPanaete Adrian proflaurian Data 1 ianuarie 2017 11:24:03
Problema Trapez Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <vector>
#include <map>
#include <algorithm>


using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int n,i,j,x,y,d,v,o;
long long sol;
vector<pair<int,int>> P;
map<pair<int,int>,int> M;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>x>>y;
        P.push_back(make_pair(x,y));
    }
    for(i=0;i<n;i++)
        for(j=i+1;j<n;j++)
        {
            x=P[i].first-P[j].first;
            y=P[i].second-P[j].second;
            if(x==0){v++;continue;}
            if(y==0){o++;continue;}
            if(x<0){x=-x;y=-y;}
            d=__gcd(x,abs(y));
            x/=d;y/=d;
            M[make_pair(x,y)]++;
        }
    sol=1LL*o*(o-1)/2+1LL*v*(v-1)/2;
    for(auto it:M)
        sol+=1LL*it.second*(it.second-1)/2;
    g<<sol;
    return 0;
}