Pagini recente » Cod sursa (job #2596743) | Cod sursa (job #169844) | Cod sursa (job #539769) | Cod sursa (job #2534645) | Cod sursa (job #1799337)
#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;
}