Pagini recente » Cod sursa (job #236724) | Cod sursa (job #176700) | Cod sursa (job #102572) | Cod sursa (job #597612) | Cod sursa (job #3293241)
#include <fstream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream fin("rays.in");
ofstream fout("rays.out");
#define int double
vector<pair<int,int>>poz,neg;
signed n;
struct segment
{
int x,y,y2;
};
int solve(vector<pair<int,int>>v)
{
sort(v.begin(),v.end());
int sol=1;
int Min=v[0].second;
for(int i=1;i<v.size();i++)
{
if(v[i].first>Min)
{
Min=v[i].second;
sol++;
}
else Min=min(Min,v[i].second);
}
return sol;
}
signed main()
{
fin>>n;
for(signed i=1;i<=n;i++)
{segment seg;
fin>>seg.x>>seg.y>>seg.y2;
int x2=(seg.x>0?seg.x:-seg.x);
int unghi1=atan2(seg.y,x2);
int unghi2=atan2(seg.y2,x2);
if(unghi1>unghi2)swap(unghi1,unghi2);
if(seg.x>0)
{
poz.push_back({unghi1,unghi2});
}
else
{
neg.push_back({unghi1,unghi2});
}
}
fout<<solve(poz)+solve(neg);
return 0;
}