Cod sursa(job #1332549)

Utilizator wGEORGEWGeorge Cioti wGEORGEW Data 2 februarie 2015 10:16:00
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 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 );
}