Cod sursa(job #1519568)

Utilizator ducu34Albastroiu Radu Gabriel ducu34 Data 7 noiembrie 2015 15:33:39
Problema Rays Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rays.in");
ofstream fout("rays.out");
int n,n1,n2,i,viz[200001],NR,ultim1,ultim2;
double x,y,y2,THEBIGX;
struct date
{
    int ord;
    double sus,jos;
}v1[200001],v3[200001];

bool cmp(date A,date B)
{
    if(A.sus==B.sus)
        return A.jos<B.jos;
    else
        return A.sus<B.sus;
}

int main()
{
    freopen("rays.in","r",stdin);
    freopen("rays.out","w",stdout);
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>x>>y>>y2;
        if(y>y2)
            swap(y,y2);
        if(x>0)
        {
            n1++;
            v1[n1].ord=i;
            v1[n1].jos=y/x;
            v1[n1].sus=y2/x;
        }
        else
        {
            n2++;
            x=-x;
            v3[n2].ord=i;
            v3[n2].jos=y/x;
            v3[n2].sus=y2/x;
        }
    }

    sort(v1+1,v1+n1+1,cmp);
    sort(v3+1,v3+n2+1,cmp);
    NR=0;
    THEBIGX=-9999999;
    for(i=1;i<=n1;i++)
    {
        if(v1[i].jos>THEBIGX)
        {
            NR++;
            THEBIGX=v1[i].sus;
        }
    }

    THEBIGX=-9999999;
    for(i=1;i<=n2;i++)
    {
        if(v3[i].jos>THEBIGX)
        {
            NR++;
            THEBIGX=v3[i].sus;
        }
    }
    fout<<NR;
    return 0;
}