Pagini recente » Cod sursa (job #724360) | Cod sursa (job #1307275) | Cod sursa (job #2218412) | Cod sursa (job #2526074) | Cod sursa (job #3187953)
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("rays.in");
ofstream fout("rays.out");
int n,x,y,z,nr;
struct numar
{
double x,y;
};
vector <numar> d;
vector <numar> s;
int cmp(numar a,numar b)
{
return a.x<b.x;
}
void rez(vector <numar> x)
{
sort(x.begin(),x.end(),cmp);
nr++;
double dmin=x[0].x,dmax=x[0].y;
for(int i=1;i<x.size();i++)
{
double x1=x[i].x;
double y1=x[i].y;
if(x1>dmax)
{
nr++;
dmin=x1;
dmax=y1;
}
if(x1<dmax)
dmax=min(dmax,y1);
}
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
fin>>x>>y>>z;
double u1=atan2(y,abs(x));
double u2=atan2(z,abs(x));
if(u1>u2)
swap(u1,u2);
if(x>0)
{
d.push_back({u1,u2});
}
else
s.push_back({u1,u2});
}
rez(d);
rez(s);
fout<<nr;
return 0;
}