Cod sursa(job #2243477)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 20 septembrie 2018 17:42:59
Problema Rays Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
#include<algorithm>
#define x first
#define y second
using namespace std;
ifstream fi("rays.in");
ofstream fo("rays.out");
double dr;
pair<double,double> Ist[200005],Idr[200005];
int n,x,y,yy,i,rez,nr1,nr2;
int main()
{
    fi>>n;
    for(i=1; i<=n; i++)
    {
        fi>>x>>y>>yy;
        if(y>yy)
            swap(y,yy);
        if(x<0)
            Ist[++nr1]={-1.0*y/x,-1.0*yy/x};
        else
            Idr[++nr2]={1.0*y/x,1.0*yy/x};
    }
    sort(Ist+1,Ist+nr1+1);
    sort(Idr+1,Idr+nr2+1);
    dr=-1000000000.0;
    for(i=1; i<=nr1; i++)
    {
        if(dr>=Ist[i].x)
            dr=min(dr,Ist[i].y);
        else
        {
            rez++;
            dr=Ist[i].y;
        }
    }
    dr=-1000000000.0;
    for(i=1; i<=nr2; i++)
    {
        if(dr>=Idr[i].x)
            dr=min(dr,Idr[i].y);
        else
        {
            rez++;
            dr=Idr[i].y;
        }
    }
    fo<<rez<<"\n";
    fi.close();
    fo.close();
    return 0;
}