Cod sursa(job #1799337)

Utilizator nedelcu11Nedelcu Mihai Vlad nedelcu11 Data 6 noiembrie 2016 09:46:34
Problema Rays Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#define Nmax 200005
using namespace std;
ifstream f("rays.in");
ofstream g("rays.out");
int n,kv,ku,nr;
struct segment {int x,y1,y2;} v[Nmax],u[Nmax];
int cmp(segment a, segment b)
{   return 1LL*b.x*a.y2<1LL*a.x*b.y2;
}
int main()
{   f>>n;
    for(int i=1;i<=n;i++)
    {   segment seg;
        f>>seg.x>>seg.y1>>seg.y2;
        if(seg.y1>seg.y2) swap(seg.y1,seg.y2);
        if(seg.x>0) v[++kv]=seg; else {seg.x=-seg.x; u[++ku]=seg;}
    }
    sort(v+1,v+kv+1,cmp);
    if(kv)
    {   nr++;
        int X=v[1].x,Y=v[1].y2;
        for(int i=2;i<=kv;i++)
            if(1LL*X*v[i].y1>1LL*Y*v[i].x) {nr++; X=v[i].x; Y=v[i].y2;}
    }
    sort(u+1,u+ku+1,cmp);
    if(ku)
    {   nr++;
        int X=u[1].x,Y=u[1].y2;
        for(int i=2;i<=ku;i++)
            if(1LL*X*u[i].y1>1LL*Y*u[i].x) {nr++; X=u[i].x; Y=u[i].y2;}
    }
    g<<nr<<'\n'; g.close(); return 0;
}