210182026-01-12 08:19:52hunzombiBenzinkút üzemeltetés (55)cpp17Hibás válasz 0/5516ms12304 KiB
#include <bits/stdc++.h>
using namespace std;

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

    int n, k;
    cin >> n >> k;
    vector<long long> dp(1000001, 0);
    vector<int> prev(1000001, 0);
    for (int i=0; i < n; i++) {
        int u, v;
        cin >> u >> v;
        dp[u] = v;
    }
    for (int i=1; i <= 1000000; i++) {
        long long best = dp[i];
        if (i - k > 0) {
            best += dp[i - k];
        }
        if (best > dp[i - 1]) {
            dp[i] = best;
            prev[i] = max(i - k, 0);
        } else {
            dp[i] = dp[i - 1];
            prev[i] = prev[i - 1];
        }
    }
    vector<int> res;
    int i = n + 1;
    while (i > 0) {
        res.push_back(i);
        i = prev[i];
    }
    reverse(res.begin(), res.end());
    cout << dp[1000000] << '\n';
    cout << res.size() << ' ';
    for (int x : res) cout << x << ' ';
    cout << '\n';
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Hibás válasz0/013ms12088 KiB
2Hibás válasz0/016ms12268 KiB
3Hibás válasz0/313ms12084 KiB
4Hibás válasz0/314ms12088 KiB
5Hibás válasz0/314ms12084 KiB
6Hibás válasz0/314ms12084 KiB
7Hibás válasz0/314ms12084 KiB
8Hibás válasz0/316ms11948 KiB
9Hibás válasz0/314ms12120 KiB
10Hibás válasz0/316ms12268 KiB
11Hibás válasz0/314ms11940 KiB
12Hibás válasz0/316ms12100 KiB
13Hibás válasz0/416ms12268 KiB
14Hibás válasz0/414ms12084 KiB
15Hibás válasz0/514ms12304 KiB
16Hibás válasz0/614ms12084 KiB
17Hibás válasz0/614ms12084 KiB