Cod sursa(job #2546524)

Utilizator betybety bety bety Data 14 februarie 2020 11:29:17
Problema Rays Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#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;
}