6972 2023. 12. 23 08:18:40 Gervid Benzinkút üzemeltetés (55) cpp17 Elfogadva 55/55 4ms 3872 KiB
#include <iostream>
#include <vector>
#include <stack>

using namespace std;

int main()
{
    int n, k, i, j;
    cin >> n >> k;

    vector<pair<int, int>> places(n);

    for (i = 0; i < n; i++)
    {
        cin >> places[i].first >> places[i].second; //dist, profit
    }

    vector<int> opt(n); // profit
    vector<int> last(n, -1);

    for (i = 0; i < n; i++)
    {
        int max = 0, maxi = -1;
        for (j = 0; j < i; j++)
        {
            if (max < opt[j] && places[j].first + k <= places[i].first)
            {
                max = opt[j];
                maxi = j;
            }
        }

        last[i] = maxi;
        opt[i] = max + places[i].second;
    }

    int max = 0, maxi = 0;
    for (j = 0; j < i; j++)
    {
        if (max < opt[j])
        {
            max = opt[j];
            maxi = j;
        }
    }

    cout << max << endl;

    int node = maxi;
    stack<int> reverse;

    while (node != -1)
    {
        reverse.push(node);
        node = last[node];
    }

    cout << reverse.size();

    while (reverse.size() > 0)
    {
        cout << ' ' << reverse.top() + 1;
        reverse.pop();
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1688 KiB
2 Elfogadva 0/0 4ms 1868 KiB
3 Elfogadva 3/3 3ms 2064 KiB
4 Elfogadva 3/3 3ms 2276 KiB
5 Elfogadva 3/3 3ms 2356 KiB
6 Elfogadva 3/3 3ms 2600 KiB
7 Elfogadva 3/3 3ms 2716 KiB
8 Elfogadva 3/3 3ms 2828 KiB
9 Elfogadva 3/3 3ms 2976 KiB
10 Elfogadva 3/3 3ms 3224 KiB
11 Elfogadva 3/3 3ms 3364 KiB
12 Elfogadva 3/3 3ms 3460 KiB
13 Elfogadva 4/4 3ms 3664 KiB
14 Elfogadva 4/4 3ms 3748 KiB
15 Elfogadva 5/5 3ms 3748 KiB
16 Elfogadva 6/6 4ms 3640 KiB
17 Elfogadva 6/6 4ms 3872 KiB