Cod sursa(job #597620)

Utilizator ion_calimanUAIC Ion Caliman ion_caliman Data 22 iunie 2011 17:28:31
Problema Trapez Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <algorithm>
using namespace std;

typedef struct
{
    long long x,y;
} punct;

typedef struct
{
    long long numarator, numitor;
} panta;

panta b[1100000];
int n,poz=-1,nr=0;
punct a[1100];

bool ok(panta a, panta b)
{
    return (a.numitor*b.numarator>=a.numarator*b.numitor);
}

int main()
{
    ifstream f("trapez.in");
    ofstream g("trapez.out");
    f >> n;
    int i,j,oriz=0,vert=0;
    for (i=0; i<n; i++)
        f >> a[i].x >> a[i].y;
    for (i=0; i<n-1; i++)
    for (j=i+1; j<n; j++)
    {
        poz++;
        b[poz].numarator=a[i].y-a[j].y;
        b[poz].numitor=a[i].x-a[j].x;
        if (b[poz].numarator==0)
        {
            oriz++;
            poz--;
        } else
        if (b[poz].numitor==0)
        {
            vert++;
            poz--;
        } else
        if (b[poz].numarator<0 && b[poz].numitor<0)
        {
            b[poz].numarator*=-1;
            b[poz].numitor*=-1;
        }
    }
    poz++;
    sort(b, b+poz,ok);
    for (i=1; i<poz; i++)
        if (b[i].numitor*b[i-1].numarator==b[i].numarator*b[i-1].numitor) nr++;
    nr+=(oriz-1)*oriz/2 + (vert-1)*vert/2;
    g << nr;
    return 0;
}