Cod sursa(job #3293241)

Utilizator bagae123Burlacu Andrei bagae123 Data 10 aprilie 2025 21:11:03
Problema Rays Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#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;
}