217222026-01-13 18:24:55algoproBenzinkút üzemeltetés (55)cpp17Hibás válasz 12/553ms560 KiB
// UUID: 0fa5dd79-8da3-44f9-8936-f8ab39126738
#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;
    }
    cout << bstop.size() << " ";
    for (int i=bstop.size()-1; i>=0; i--){
        cout << bstop[i] << " ";
    }

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base12/55
1Hibás válasz0/01ms316 KiB
2Hibás válasz0/02ms316 KiB
3Elfogadva3/31ms508 KiB
4Elfogadva3/31ms316 KiB
5Hibás válasz0/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Hibás válasz0/31ms560 KiB
8Elfogadva3/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/31ms316 KiB
13Hibás válasz0/41ms316 KiB
14Hibás válasz0/42ms508 KiB
15Hibás válasz0/52ms316 KiB
16Hibás válasz0/62ms316 KiB
17Hibás válasz0/63ms316 KiB