Pagini recente » Cod sursa (job #2156748) | Cod sursa (job #1985392) | Cod sursa (job #1549927) | Cod sursa (job #940625) | Cod sursa (job #3188898)
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <climits>
using namespace std;
ifstream fin("rays.in");
ofstream fout("rays.out");
struct punct{
double st;
double dr;
};
vector <punct> s, d;
int n;
int f(vector<punct>& v)
{
int s=1;
sort(v.begin(),v.end(),[](punct a,punct b){return a.st<b.st;});
double mnd = v[0].dr;
for(int i = 1; i<v.size();i++)
{
double st = v[i].st;
double dr = v[i].dr;
if(st < mnd)
mnd=min(mnd,dr);
else
s++,mnd = dr;
}
return s;
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++)
{
int x,y1,y2;
fin>>x>>y1>>y2;
if(y1>y2)
swap(y1,y2);
double a1 = atan2(y1,abs(x));
double a2 = atan2(y2,abs(x));
if( x > 0)
d.push_back({a1,a2});
else
s.push_back({a1,a2});
}
int sol = 0;
if(!s.empty())
sol+=f(s);
if(!d.empty())
sol+=f(d);
fout<<sol;
}