Cod sursa(job #1337184)

Utilizator Miruna_DMiruna Miruna_D Data 8 februarie 2015 18:23:23
Problema Trapez Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define eps 0.0001
#define oo 1000000000
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
int n;
double m[1000005];
struct point
{
    int x,y;
};
point p[1005];

void read()
{
    fin>>n;
    int i;
    for(i=1;i<=n;i++)
        fin>>p[i].x>>p[i].y;
}

double panta (point p1, point p2)
{
    int a=p2.y-p1.y;
    int b=p2.x-p1.x;
        if(b==0)
            return oo;
        else
            return (double)((double)a/(double)b);

}

void solve()
{
    int i,j,k=0,sol=0;
    for(i=1;i<n;i++)
        for(j=i+1;j<=n;j++)
            m[++k]=panta(p[i],p[j]);

    sort(m+1,m+k+1);


    int trapez=1;
    for(i=1;i<k;i++)
        if(m[i+1]-m[i]<eps)
        {
            trapez++;
        }

        else
        {//cout<<trapez;
             sol+=(trapez*(trapez-1))/2;
            trapez=1;
        }


    fout<<sol;

}
int main()
{
    read();
    solve();
    return 0;
}