Cod sursa(job #1139958)

Utilizator VisuianMihaiMihai Visuian VisuianMihai Data 11 martie 2014 17:20:47
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>

#define x first
#define y second
#define oo 0x3f3f3f3f

using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");

typedef pair<int,int> Punct;
Punct p[1001];
long double panta[500101];
int n, sol, k;

int main()
{
    fin>>n;
    for(int i = 1; i<= n; i++ )
    {
        fin>>p[i].x>>p[i].y;
    }
    for(int i = 1; i< n; i++ )
        for(int j = i+1; j<= n; j++ )
        {
            if(p[i].x==p[j].x)
                panta[++k]=oo;
            else panta[++k]=1.0*(p[i].y-p[j].y)/(p[i].x-p[j].x);
        }
    sort(panta+1,panta+k+1);
    for(int i = 1; i<= k; i++ )
    {
        int d=1;
        while(panta[i+d]==panta[i] && i+d<=k)
            d++;
        sol+=d*(d-1)/2;
        i+=d-1;
    }
    fout<<sol<<'\n';
    fin.close();
    fout.close();
    return 0;
}