Cod sursa(job #3358862)

Utilizator LicaMihaiIonutLica Mihai- Ionut LicaMihaiIonut Data 20 iunie 2026 23:29:23
Problema Rays Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<iostream>
#include <fstream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
ifstream f("rays.in");
ofstream g("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()
{

    f>>n;
    for(signed i=1;i<=n;i++)
        {
            segment seg;
            f>>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});
                }
        }
    g<<solve(poz)+solve(neg);
    f.close();
    g.close();
    return 0;
}