Cod sursa(job #3187953)

Utilizator Cazacu2006RazvanRazvan Cazacu Cazacu2006Razvan Data 31 decembrie 2023 15:55:38
Problema Rays Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("rays.in");
ofstream fout("rays.out");
int n,x,y,z,nr;
struct numar
{
    double x,y;
};
vector <numar> d;
vector <numar> s;
int cmp(numar a,numar b)
{
    return a.x<b.x;
}
void rez(vector <numar> x)
{

    sort(x.begin(),x.end(),cmp);
    nr++;
    double dmin=x[0].x,dmax=x[0].y;

    for(int i=1;i<x.size();i++)
    {

        double x1=x[i].x;
        double y1=x[i].y;

        if(x1>dmax)
        {

            nr++;
            dmin=x1;
            dmax=y1;
        }
        if(x1<dmax)
            dmax=min(dmax,y1);
    }


}
int main()
{
    fin>>n;
    for(int i=1;i<=n;i++)
    {
        fin>>x>>y>>z;
        double u1=atan2(y,abs(x));
        double u2=atan2(z,abs(x));
        if(u1>u2)
            swap(u1,u2);
        if(x>0)
        {
           d.push_back({u1,u2});
        }
        else
        s.push_back({u1,u2});

    }


    rez(d);
    rez(s);
    fout<<nr;

    return 0;
}