130852025-01-06 11:54:19ruffbrigiA lehető legkevesebb átszállás (50 pont)cpp17Internal error
#include <iostream>
#include <map>
#include <vector>

using namespace std;

struct fin_ssz
{
    int fin;
    int ssz;
};

int main()
{
    int n,m,x,y;
    cin>>n>>m;
    map<int,struct fin_ssz> vonat;
    for(int i=1;i<=n;i++)
    {
        cin>>x>>y;
        auto it=vonat.find(x);
        if (it!=vonat.end())
        {
           if(y>vonat[x].fin)
           {
               vonat[x].fin=y;
               vonat[x].ssz=i;
           }
        }
        else
        {
            vonat[x].fin=y;
            vonat[x].ssz=i;
        }
    }
    int atsz=0,meddig,ujmeddig,ujssz;
    vector<int> sorszamok;
    auto it=vonat.find(1);
    if (it!=vonat.end())
    {
        meddig=vonat[1].fin;
        ujmeddig=meddig;
        sorszamok.push_back(vonat[1].ssz);
        if(meddig==m)
        {
                cout<<"0"<<endl;
                cout<<vonat[1].ssz;
                return 0;
        }
        for (const auto& pair : vonat)
        {
                if(pair.first <=meddig)
                {
                    if(pair.second.fin>ujmeddig)
                    {
                        ujmeddig=pair.second.fin;
                        ujssz=pair.second.ssz;
                    }
                    if(pair.first==meddig)
                    {
                        if(ujmeddig<=meddig && meddig!=m)
                        {
                            cout<<"-1";
                            return 0;
                        }
                        atsz++;
                        sorszamok.push_back(ujssz);
                        if(ujmeddig==m)
                        {
                            break;
                        }
                        meddig=ujmeddig;
                    }
                }
                else
                {
                    if(ujmeddig<=meddig && meddig!=m)
                    {
                        cout<<"-1";
                        return 0;
                    }
                    atsz++;
                    sorszamok.push_back(ujssz);
                    meddig=ujmeddig;
                    if(pair.second.fin>ujmeddig)
                    {
                        ujmeddig=pair.second.fin;
                        ujssz=pair.second.ssz;
                    }
                }
        }
    }
    else
    {
            cout<<"-1";
            return 0;
    }

    if(ujmeddig<=meddig && meddig!=m)
    {
            cout<<"-1";
            return 0;
    }
    cout<<atsz<<endl;
    for (int elem : sorszamok) {
        cout << elem << " ";
}
return 0;
    }