140082025-01-09 17:18:22gergomiszoriBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms564 KiB
#include <bits/stdc++.h>

using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    vector<pair<int,int>> v(n);
    map<int, int> pei;
    for (int i = 0; i < n; i++) {
        int a, b; cin >> a >> b;
        v[i] = {a, b};
        pei[a] = i+1;
    }
    int dmax = v[n-1].first;
    vector<int> dp(dmax+1, 0);
    vector<bool> bd(dmax+1, false);
    int ind = 0;
    for (int i = 1; i <= dmax; i++) {
        dp[i] = dp[i-1];
        if (i == v[ind].first) {
            if (dp[i] < dp[max(i-k,0)] + v[ind].second) {
                dp[i] = dp[max(i-k,0)] + v[ind].second;
                bd[i] = true;
            }
            ind++;
        }   
    }
    vector<int> loc;
    for (int i = dmax; i > 0; i--) {
        if (bd[i]) {
            loc.push_back(pei[i]);
            i -= k - 1;
        }
    }
    cout << dp[dmax] << '\n';
    reverse(loc.begin(), loc.end());
    cout << loc.size() << ' ';
    for (int i : loc)
        cout << i << ' ';
    cout << '\n';
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms564 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms508 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/42ms548 KiB
14Elfogadva4/42ms316 KiB
15Elfogadva5/52ms316 KiB
16Elfogadva6/62ms316 KiB
17Elfogadva6/62ms564 KiB