Cod sursa(job #1448581)

Utilizator zacuscaAlex Iordache zacusca Data 7 iunie 2015 15:59:53
Problema Rays Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("rays.in");
ofstream out("rays.out");
struct art
{
    long long x,y,y1;
};
art aux,a[200003],b[200003];
bool cmp(art a, art b)
{
    return (a.y1 * b.x < a.x * b.y1);
}
int n,la,lb,sol;
int main()
{
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>aux.x>>aux.y>>aux.y1;
        if(aux.y>aux.y1)swap(aux.y,aux.y1);
            if(aux.x<0)
            {
                aux.x*=-1;
                a[++la]=aux;
            }
            else b[++lb]=aux;
    }

    if(la)
    {
        sol++;
        sort(a+1,a+la+1,cmp);
        long long x=a[1].x, y=a[1].y1;
        for(int i=2;i<=la;i++)
            if(a[i].x * y < a[i].y * x)
            {
                sol++;
                x=a[i].x;
                y=a[i].y1;
            }
    }

    if(lb)
    {
        sol++;
        sort(b+1,b+lb+1,cmp);
        long long x=b[1].x, y=b[1].y1;
        for(int i=2;i<=lb;i++)
            if(b[i].x * y < b[i].y * x)
            {
                sol++;
                x=b[i].x;
                y=b[i].y1;
            }
    }

    out<<sol<<'\n';
    out.close();
    return 0;
}