Cod sursa(job #1510662)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 25 octombrie 2015 14:35:49
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("trapez.in");
ofstream out("trapez.out");

int n;
int xc[1005];
int yc[1005];
vector<pair<long long,long long> > v;

bool compare(pair<long long,long long> A,pair<long long,long long> B)
{
    return ((A.first*B.second) < (A.second*B.first));
}

bool p_equal(pair<long long,long long> A,pair<long long,long long> B)
{
    return ((A.first*B.second) == (A.second*B.first));
}

int main()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>xc[i]>>yc[i];
    in.close();
    int nr,nm;
    for(int i=1;i<n;i++)
    for(int j=i+1;j<=n;j++)
    {
        nr = yc[i]-yc[j];
        nm = xc[i]-xc[j];
        if(nr<0)
        {
            nr=-nr;
            nm=-nm;
        }
        pair<long long,long long> p = make_pair(nr,nm);
        v.push_back(p);
    }
    sort(v.begin(),v.end(),compare);
    int sol = 0;
    int c = 1;
    for(unsigned int i = 0;i<v.size();i++)
    {
        unsigned int j = i+1;
        c = 1;
        while(j<v.size() && p_equal(v[i],v[j]))
        {
            c++;
            j++;
        }
        sol  += (c*(c-1))/2;
        i = j-1;
    }
    out<<sol<<'\n';
    out.close();
    return 0;
}