130912025-01-06 14:17:43ruffbrigiA lehető legkevesebb átszállás (50 pont)cpp17Hibás válasz 40/5012ms1132 KiB
#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;
    }

RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/012ms1080 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva1/11ms316 KiB
5Elfogadva2/21ms508 KiB
6Hibás válasz0/21ms316 KiB
7Elfogadva2/22ms316 KiB
8Elfogadva2/22ms316 KiB
9Elfogadva2/23ms316 KiB
10Elfogadva2/24ms564 KiB
11Elfogadva2/24ms564 KiB
12Elfogadva2/26ms696 KiB
13Elfogadva2/22ms468 KiB
14Elfogadva2/23ms364 KiB
15Elfogadva2/24ms564 KiB
16Elfogadva2/26ms564 KiB
17Elfogadva2/28ms820 KiB
18Elfogadva2/29ms820 KiB
19Elfogadva2/29ms820 KiB
20Elfogadva2/210ms832 KiB
21Elfogadva2/212ms940 KiB
22Elfogadva2/212ms1124 KiB
23Hibás válasz0/212ms1132 KiB
24Hibás válasz0/212ms1032 KiB
25Elfogadva2/212ms1076 KiB
26Hibás válasz0/212ms1052 KiB
27Hibás válasz0/212ms1076 KiB
28Elfogadva2/212ms1044 KiB