Cod sursa(job #2207221)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 25 mai 2018 11:08:02
Problema Rays Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb

#include <fstream>
#include <algorithm>
#include <math.h>
#include <vector>
using namespace std;
ifstream fin ("rays.in");
ofstream fout("rays.out");
int i,n,x,y,y2,r,d,ndr,nst;
double a,b;
pair<double,double> dr[200001], st[200001];
int mod(int val){if(val<0)return -val; else return val;}

int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>x>>y>>y2;
        if(y>y2)
            swap(y2, y);
        if(x>0)
            dr[++ndr]=make_pair(1.0*y/x, 1.0*y2/x);
        else
            st[++nst]=make_pair(1.0*y/mod(x), 1.0*y2/mod(x));
    }
    sort(dr+1, dr+ndr+1);
    b=-10000000;
    for(i=1;i<=ndr;i++)
    {
        if(dr[i].first>b)
        {
            b=dr[i].second;
            r++;
        }
        else
            b=min(b, dr[i].second);
    }
    sort(st+1, st+1+nst);
    b=-10000000;
    for(i=1;i<=nst;i++)
    {
        if(st[i].first>b)
        {
            b=st[i].second;
            d++;
        }
        else
            b=min(b,st[i].second);
    }
    fout<<r+d;
    fin.close();
    fout.close();
    return 0;
}