Pagini recente » Cod sursa (job #1926081) | Cod sursa (job #2509193) | Cod sursa (job #2350783) | Cod sursa (job #2543739) | Cod sursa (job #3188096)
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin ("rays.in");
ofstream fout("rays.out");
struct elem
{
double y1,y2;
};
vector <elem> N,P;
int n,i,nr,x,y,z,sol;
double a,b,minim,maxim;
int cmp(elem a,elem b){return a.y1<b.y1;}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>x>>y>>z;
double Y1=atan2(y,abs(x));
double Y2=atan2(z,abs(x));
//fout<<Y1<<" "<<Y2<<"\n";
if(Y1>Y2)
swap(Y1,Y2);
if(x<0)
N.push_back({Y1,Y2});
else
P.push_back({Y1,Y2});
}
sort(N.begin(),N.end(),cmp);
sol++;
minim=N[0].y1;
maxim=N[0].y2;
for(i=1;i<N.size();i++)
{
a=N[i].y1;
b=N[i].y2;
if(a>maxim)
{
sol++;
minim=a;
maxim=b;
}
if(a<maxim)
maxim=min(maxim,b);
}
sort(P.begin(),P.end(),cmp);
sol++;
minim=P[0].y1;
maxim=P[0].y2;
for(i=1;i<P.size();i++)
{
a=P[i].y1;
b=P[i].y2;
if(a>maxim)
{
sol++;
minim=a;
maxim=b;
}
if(a<maxim)
maxim=min(maxim,b);
}
fout<<sol;
return 0;
}