235762026-01-25 14:28:23algoproBenzinkút üzemeltetés (55)cpp17Elfogadva 55/551ms600 KiB
// UUID: 6e7c0025-a0dd-4aa9-81e2-71f1e77625bc
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;

    vector<int> T(N + 1), H(N + 1);
    for (int i = 1; i <= N; i++) {
        cin >> T[i] >> H[i];
    }

    vector<int> dp(N + 1, 0);
    vector<bool> take(N + 1, false);
    vector<int> prev(N + 1, 0);

    for (int i = 1; i <= N; i++) {
        dp[i] = dp[i - 1];

        int j = i - 1;
        while (j > 0 && T[j] > T[i] - K) {
            j--;
        }

        int value = dp[j] + H[i];
        if (value > dp[i]) {
            dp[i] = value;
            take[i] = true;
            prev[i] = j;
        }
    }
    vector<int> result;
    int i = N;
    while (i > 0) {
        if (take[i]) {
            result.push_back(i);
            i = prev[i];
        } else {
            i--;
        }
    }
    cout << dp[N] << endl;
    cout << result.size();

    for (int k = result.size() - 1; k >= 0; k--) {
        cout << " " << result[k];
    }
    cout << endl;

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms560 KiB
7Elfogadva3/31ms396 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms332 KiB
10Elfogadva3/31ms508 KiB
11Elfogadva3/31ms392 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms508 KiB
16Elfogadva6/61ms600 KiB
17Elfogadva6/61ms316 KiB