Cod sursa(job #583951)

Utilizator stef93Stefan Gilca stef93 Data 23 aprilie 2011 13:18:23
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>
#include <algorithm>
using namespace std;

int n,seg,nrt;
struct p{long long x,y;};
p a[1006];
struct dr{double panta;};
dr b[1006*1006];

void calcul_panta(p A,p B)
{
    if(A.x<B.x){
    B.x-=A.x,B.y-=A.y;
    b[seg++].panta=(double)B.x / B.y;}
    else
    {
        A.x -= B.x,A.y -= B.y;
        b[seg++].panta=(double)A.x / A.y;
    }
}
bool cmp(dr t,dr q)
{
    return t.panta>q.panta;
}

int main()
{
    long long i,j;
    ifstream in("trapez.in");
    in>>n;
    for(i=0;i<n;i++)
    in>>a[i].x>>a[i].y;
    in.close();
    for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
    calcul_panta(a[i],a[j]);
    sort(b,b+seg,cmp);
    int q=0;
    for(i=0;i<seg;i++)
    {
        if(b[i].panta!=b[i+1].panta)
        {
            q++;
            nrt+=(q*(q-1))/2;
            q=0;
        }
        else q++;
    }
    ofstream out("trapez.out");
    out<<nrt<<'\n';
    return 0;
}