Pagini recente » Cod sursa (job #703216) | Cod sursa (job #2859075) | Cod sursa (job #2889483) | Cod sursa (job #3166606) | Cod sursa (job #2546524)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rays.in");
ofstream out("rays.out");
int n,x,y,z;
#define ld double
ld a1,a2;
vector<pair<ld,ld> > poz,neg;
int solve(vector<pair<ld,ld> > v)
{
sort(v.begin(),v.end());
int ans=0;
ld mn=v[0].first-1;
for(int i=0;i<v.size();++i)
{
if(v[i].first>mn)
{
++ans;
mn=v[i].second;
}
else mn=min(mn,v[i].second);
}
return ans;
}
int main()
{
in>>n;
for(int i=1;i<=n;++i)
{
in>>x>>y>>z;
int x2=(x>0?x:-x);
ld angle1=atan2(y,x2);
ld angle2=atan2(z,x2);
if(angle1>angle2)
swap(angle1,angle2);
if(x>0)
poz.push_back({angle1,angle2});
else neg.push_back({angle1,angle2});
}
out<<solve(poz)+solve(neg);
return 0;
}