236222026-01-26 16:26:10algoproBenzinkút üzemeltetés (55)cpp17Wrong answer 0/557ms508 KiB
// UUID: db96b1e6-f7e2-4ca9-b7fd-f8819152d654
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k;
    cin >> n >> k;
    vector<pair<long long, long long>> dis(n+1);
    for(int i = 1; i <= n; i++){
        cin >> dis[i].first >> dis[i].second;
    }
    dis[0].first = dis[1].first - k;
    dis[0].second = 0;

    vector<long long> dp(n+1);
    vector <vector<int>> ans(n+1);
    dp[0] = 0;
    for(int i = 1; i <= n; i++){
        for(int j = i-1; j >-1; j--){
            if(dis[i].first - dis[j].first >= k){
                dp[i] = max(dp[i-1], dp[j] + dis[i].second);
                if(dp[i-1] < dp[j] + dis[i].second){
                    ans[i] = ans[j];
                    ans[i].push_back(i);
                }
                else{
                    ans[i] = ans[i-1];
                    break;
                }
            }
        }
        cout << dp[n] << "\n" << ans[n].size();
        for(int x : ans[n]){
            cout << " " << x;
        }
    }
}
SubtaskSumTestVerdictTimeMemory
base0/55
1Wrong answer0/01ms508 KiB
2Wrong answer0/07ms508 KiB
3Wrong answer0/31ms316 KiB
4Wrong answer0/31ms316 KiB
5Wrong answer0/31ms316 KiB
6Wrong answer0/31ms316 KiB
7Wrong answer0/31ms316 KiB
8Wrong answer0/31ms316 KiB
9Wrong answer0/31ms316 KiB
10Wrong answer0/31ms500 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/33ms432 KiB
13Wrong answer0/43ms316 KiB
14Wrong answer0/44ms316 KiB
15Wrong answer0/54ms508 KiB
16Wrong answer0/66ms408 KiB
17Wrong answer0/67ms316 KiB