Pagini recente » Cod sursa (job #1784924) | Cod sursa (job #500085) | Cod sursa (job #1310488) | Cod sursa (job #1125057) | Cod sursa (job #950643)
Cod sursa(job #950643)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("rays.in"); ofstream g("rays.out");
const int Nmax=200002;
struct segment {long long x,y1,y2;};
int n,nv,nu,nr,i,j;
long long X,Y;
segment v[Nmax],u[Nmax];
int main()
{ f>>n;
while(n--)
{ segment seg;
f>>seg.x>>seg.y1>>seg.y2;
if(seg.y1>seg.y2) swap(seg.y1,seg.y2);
if(seg.x>0) v[++nv]=seg; else {seg.x=-seg.x; u[++nu]=seg;}
}
if(nv)
{for(i=1;i<nv;i++)
for(j=i+1;j<=nv;j++)
if(v[i].y2*v[j].x<v[j].y2*v[i].x) swap(v[i],v[j]);
nr++; X=v[1].x,Y=v[1].y1;
for(i=2;i<=nv;++i)
if(X*v[i].y2<Y*v[i].x) {nr++; X=v[i].x; Y=v[i].y1;}
}
if(nu)
{for(i=1;i<nu;i++)
for(j=i+1;j<=nu;j++)
if(u[i].y2*u[j].x<u[j].y2*u[i].x) swap(u[i],u[j]);
nr++; X=u[1].x,Y=u[1].y1;
for(i=2;i<=nu;++i)
if(X*u[i].y2<Y*u[i].x) {nr++; X=u[i].x; Y=u[i].y1;}
}
g<<nr<<'\n'; g.close(); return 0;
}