217162026-01-13 18:23:16algoproBenzinkút üzemeltetés (55)cpp17Wrong answer 0/553ms500 KiB
// UUID: 3516b8be-593a-468a-8b41-468d37511dc2
#include <algorithm>
#include <bits/stdc++.h>
#include <utility>
using namespace std;



int main() {

    int n, m;
    cin >> n >> m;

    vector <pair<int,int>> dp(n+1, pair(0,0));

    vector <pair<int,int>> stops (n+1);

    for (int i=1; i<=n; i++){
        cin >> stops[i].first >> stops[i].second;  
    } 

    dp[0].first = 0;
    int maxprofit = 0;
    
    for (int i=1; i<=n; i++){
        maxprofit = 0;

        for (int j=1; j<=i; j++){
            if (dp[maxprofit].first <= dp[j].first && abs(stops[j].first - stops[i].first) >= m){
                maxprofit = j;
            }
        }

        dp[i].first = max(dp[maxprofit].first + stops[i].second, dp[i-1].first);
        dp[i].second = maxprofit;
        //cout << dp[i] << "dp " << maxprofit << endl;

    }

    cout << dp[n].first << endl;
    
    vector <int> bstop(0);
    int h=n;

    while (dp[h].first == dp[h-1].first) h--;
    
    

    while (h != 0){
        bstop.push_back(h);
        h = dp[h].second;
    }
    for (int i=bstop.size()-1; i>=0; i--){
        cout << bstop[i] << " ";
    }

}
SubtaskSumTestVerdictTimeMemory
base0/55
1Wrong answer0/01ms316 KiB
2Wrong answer0/03ms316 KiB
3Wrong answer0/31ms500 KiB
4Wrong answer0/32ms316 KiB
5Wrong answer0/31ms316 KiB
6Wrong answer0/31ms316 KiB
7Wrong answer0/31ms316 KiB
8Wrong answer0/31ms316 KiB
9Wrong answer0/31ms316 KiB
10Wrong answer0/31ms316 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/31ms316 KiB
13Wrong answer0/42ms316 KiB
14Wrong answer0/42ms316 KiB
15Wrong answer0/52ms316 KiB
16Wrong answer0/62ms316 KiB
17Wrong answer0/62ms316 KiB