Cod sursa(job #1603346)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 17 februarie 2016 13:47:21
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream f("trapez.in");
ofstream g("trapez.out");

int n, i, j, nr, c;
struct punct
{
    int x, y;
}a[1001];
struct linie
{
    float panta;
    int x1, x2, y1, y2;
}b[1001];

bool cmp(punct a, punct b)
{
    if (a.y == b.y)
        return b.x > a.x;
    return a.y < b.y;
}

bool cmp2(linie a, linie b)
{
    return a.panta < b.panta;
}

int main()
{
    f >> n;
    for (i = 1; i <= n; i++)
        f >> a[i].x >> a[i].y;

    sort (a+1, a+n+1, cmp);

    for (i = 1; i <= n; i++)
        for (j = i+1; j <= n; j++)
            if (i != j)
            {
                b[++nr].panta = (a[j].y-a[i].y)/((a[j].x==a[i].x) ? 1 : (a[j].x-a[i].x));
                b[nr].x1 = a[i].x, b[nr].y1 = a[i].y;
            }

    sort(b+1, b+n+1, cmp2);

    for (i = 1; i < nr; i++)
    {
        if (b[i].panta == b[i+1].panta &&
            ((b[i].x1 != b[i+1].x1) || (b[i].y1 != b[i].y1)))
            c++;
        //g << inc[i] << " ";
    }
    g << c;
    return 0;
}