Cod sursa(job #1330359)

Utilizator ancabdBadiu Anca ancabd Data 30 ianuarie 2015 17:00:45
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

const int MAX = 1010;
const double eli = 0.001;
const int INF = 0x3f3f3f3f;
struct Punct{
    int x, y;
};

Punct p[MAX];
int N;
int nrp, pe;
int nrt;
double pa[MAX * MAX];
double Panta( Punct A, Punct B );

int main()
{
    int i,j;

    fin>>N;
    for (i=1;i<=N;i++)
        fin>>p[i].x>> p[i].y;

    for (i=1;i<N;i++)
        for (j=i+1;j<=N;j++)
        {
            pa[++nrp]=Panta(p[i],p[j]);
        }

    sort(pa+1,pa+1+nrp);

    pe=0;
    for(i=1;i<nrp;i++)
    {
        pe = 0;
        while(pa[i]==pa[i+1])
            i++, pe++;
        nrt+=(pe*(pe+1)/2);
    }

    fout<<nrt<<'\n';

    fin.close();
    fout.close();
    return 0;
}

double Panta( Punct A, Punct B )
{
    if ( B.x == A.x ) return INF;
    return (double)( B.y - A.y ) / ( B.x - A.x );
}