Cod sursa(job #1152536)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 24 martie 2014 19:47:07
Problema Rays Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
#include<algorithm>
#define NMAX 200010

using namespace std;

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

struct dreapta
{
    long long x, y1, y2;
}a[NMAX], b[NMAX];
int na, nb, n, sol=0;

void Citeste()
{
    int i;
    dreapta D;

    f>>n;
    for (i=1; i<=n; ++i)
    {
        f>>D.x>>D.y1>>D.y2;
        if (D.y1>D.y2) swap(D.y1, D.y2);
        if (D.x>0) a[++na]=D;
        else
        {
            D.x*=-1;
            b[++nb]=D;
        }
    }
}

bool cmp(dreapta A, dreapta B)
{
    return A.y2*B.x<A.x*B.y2;
}

void Solve(dreapta a[], int n)
{
    int i;
    dreapta P;

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

    if (n>0)
    {
        P=a[1]; ++sol;

        for (i=2; i<=n; ++i)
            if (P.y2*a[i].x<P.x*a[i].y1)
            {
                P=a[i]; ++sol;
            }
    }
}

void Scrie()
{
    g<<sol<<"\n";
}

int main()
{
    Citeste();

    Solve(a, na);
    Solve(b, nb);

    Scrie();

    f.close();
    g.close();
    return 0;
}