Cod sursa(job #1838563)

Utilizator proflaurianPanaete Adrian proflaurian Data 1 ianuarie 2017 11:50:46
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>
#include <unordered_map>
#include <algorithm>


using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int n,i,j,x,y,d,v,m;
long long sol;
double a[1000*1001/2+10];
vector<pair<int,int>> P;
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;}
            a[++m]=1.0*y/x;
        }
    sol=1LL*v*(v-1)/2;
    sort(a+1,a+m+1);
    for(i=1;i<m;i++)
    {
        j=i;
        while(a[j+1]-a[i]<0.00000000001)
            j++;
        sol+=1LL*(j-i+1)*(j-i)/2;
        i=j;
    }
    g<<sol;
    return 0;
}