257632026-03-01 19:51:21algoproBenzinkút üzemeltetés (55)cpp17Accepted 55/5519ms12268 KiB
// UUID: f62db764-473e-4dbb-821a-4716f070c628
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

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

    int n, k;
    cin >>n >>k;

    vector<int>dp(1000001, 0);
    vector<int>honnan(1000001);
    vector<int>bk(1000001, 0);

    for(int i =1; i <=n;i++){
        int poz;
        cin >> poz;
        cin >> dp[poz];
        bk[poz] = i;
    }

    for(int i = 1; i <1000001; i++){
        if(dp[i-1] < dp[i]+dp[max(i-k,0)]){
            dp[i]+= dp[max(i-k,0)];
            honnan[i] = i-k;
        }
        else{
            dp[i] = dp[i-1];
            honnan[i] = i-1;
        }
    }
    vector<int>ans;
    int poz = 1000000;
    while(poz > 0){
        //if(poz < 100)cout<<poz<<' ';
        if (bk[poz] != 0 && poz-honnan[poz] ==k){
            ans.push_back(bk[poz]);
        }
        poz = honnan[poz];
    }
    cout<<dp[1000000]<<'\n'<<ans.size()<<' ';
    reverse(ans.begin(), ans.end());
    for(int x : ans) cout<<x<<' ';
}
SubtaskSumTestVerdictTimeMemory
base55/55
1Accepted0/018ms12180 KiB
2Accepted0/017ms12084 KiB
3Accepted3/317ms12268 KiB
4Accepted3/318ms12256 KiB
5Accepted3/319ms12028 KiB
6Accepted3/317ms12008 KiB
7Accepted3/319ms12168 KiB
8Accepted3/318ms12156 KiB
9Accepted3/317ms12140 KiB
10Accepted3/319ms12084 KiB
11Accepted3/319ms12180 KiB
12Accepted3/317ms11988 KiB
13Accepted4/419ms12100 KiB
14Accepted4/417ms12084 KiB
15Accepted5/517ms12144 KiB
16Accepted6/619ms12084 KiB
17Accepted6/618ms12084 KiB