216142026-01-13 17:16:21algoproBenzinkút üzemeltetés (55)cpp17Accepted 55/552ms512 KiB
// UUID: ed283ba9-146c-4b1d-9668-26fb851187ee
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, k; cin >> n >> k;
    vector<int> a(n+1), b(n+1), c(n+1);
    vector<long long> dp(n+1);
    for(int i = 1; i <= n; i++) cin >> a[i] >> b[i];
    for(int i = 1; i <= n; i++){
        dp[i] = dp[i-1];
        c[i] = -1;
        int j = i - 1;
        while(j > 0 && a[j] > a[i] - k){
            j--;
        }
        if(dp[j] + b[i] > dp[i]){
                dp[i] = dp[j] + b[i];
                c[i] = j; 
            }
    }
    vector<int> d;
    for(int i = n; i > 0; ){
        if(c[i] != -1){
            d.push_back(i);
            i = c[i];
        }
        else i--;
    }
    sort(d.begin(), d.end());
    cout << dp[n] << "\n" << d.size();
    for(int i : d){
        cout << " " << i;
    }
}
SubtaskSumTestVerdictTimeMemory
base55/55
1Accepted0/01ms316 KiB
2Accepted0/02ms500 KiB
3Accepted3/31ms512 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted3/31ms316 KiB
9Accepted3/31ms316 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms400 KiB
12Accepted3/31ms508 KiB
13Accepted4/41ms316 KiB
14Accepted4/41ms316 KiB
15Accepted5/51ms316 KiB
16Accepted6/62ms332 KiB
17Accepted6/61ms316 KiB