44002023-03-27 15:39:38kdbA lehető legkevesebb átszállás (50 pont)cpp17Hibás válasz 19/504ms4512 KiB
#include <iostream>
#include <vector>
using namespace std;

struct Train
{
    int start;
    int end;
};

ostream& operator<<(ostream& os, const vector<int>& input)
{
    for (const int i : input) os << i << " ";
    return os;
}

int main()
{
    cin.tie(nullptr);
    cout.tie(nullptr);
    ios_base::sync_with_stdio(false);

    int n, m;
    cin >> n >> m;
    vector<Train>vec(n);

    for (size_t i = 0; i < n; i++)
    {
        int a, b;
        cin >> a >> b;
        vec[i] = { a, b };
    }
    vector<int>ans;
    int i = 1, covered = 1;
    while (covered < m)
    {
        int best = -1;
        while (i <= n and vec[i].start <= covered)
        {
            if (best == -1 or vec[best].end < vec[i].end) best = i;
            i++;

        }
        if (best == -1)
        {
            cout << -1 << "\n";
            return 0;
        }
        else
        {
            covered = vec[best].end;
            ans.push_back(best);
        }
    }
    cout << ans.size() - 1 << "\n" << ans << "\n";
}
/*
6 9
1 2
1 4
2 6
3 4
6 9
7 9


*/
RészfeladatÖsszpontTesztVerdiktIdőMemória
base19/50
1Hibás válasz0/03ms1700 KiB
2Hibás válasz0/04ms2356 KiB
3Elfogadva1/13ms2208 KiB
4Elfogadva1/13ms2420 KiB
5Részben helyes1/23ms2536 KiB
6Hibás válasz0/23ms2680 KiB
7Részben helyes1/23ms2780 KiB
8Részben helyes1/23ms2824 KiB
9Részben helyes1/23ms2952 KiB
10Részben helyes1/23ms3180 KiB
11Részben helyes1/23ms3512 KiB
12Részben helyes1/24ms3732 KiB
13Részben helyes1/23ms3756 KiB
14Részben helyes1/23ms3980 KiB
15Részben helyes1/23ms3984 KiB
16Részben helyes1/24ms3900 KiB
17Részben helyes1/24ms3916 KiB
18Részben helyes1/24ms4332 KiB
19Részben helyes1/24ms4504 KiB
20Részben helyes1/24ms4444 KiB
21Részben helyes1/24ms4476 KiB
22Részben helyes1/24ms4492 KiB
23Hibás válasz0/24ms4488 KiB
24Hibás válasz0/24ms4492 KiB
25Hibás válasz0/24ms4512 KiB
26Hibás válasz0/24ms4512 KiB
27Hibás válasz0/24ms4512 KiB
28Hibás válasz0/24ms4512 KiB