178742025-09-20 15:00:58zsombBenzinkút üzemeltetés (55)cpp17Hibás válasz 10/552ms500 KiB
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n, k;
    cin >> n >> k;

    vector<int> tav(n);
    vector<int> profit(n);

    vector<int> DP(n);
    vector<int> DPI(n, -1);
    int bestI = 0;
    
    for(int i = 0; i< n; i++)
        cin >> tav[i] >> profit[i];
    
    for(int i = 0; i< n; i++){
        int bI = -1;
        
        for(int j = 0; j < i; j++)
            if(profit[j] > profit[bI] && tav[i] - tav[j] > k)
                bI = j;

        
        DP[i] = profit[bI] + profit[i];
        DPI[i] = bI;

        if(DP[bestI] < DP[i])
            bestI = i;
    }

    cout << DP[bestI] << "\n";
    vector<int> backTrack;
    int curr = bestI;

    while (DPI[curr] != -1)
    {
        backTrack.push_back(curr);
        curr = DPI[curr];
    }
    backTrack.push_back(curr);

    reverse(backTrack.begin(), backTrack.end());
    cout << backTrack.size() << " ";
    for(auto& i : backTrack)
        cout << i+1 << " ";
    
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base10/55
1Elfogadva0/01ms316 KiB
2Hibás válasz0/02ms316 KiB
3Részben helyes1/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Hibás válasz0/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Hibás válasz0/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/32ms316 KiB
13Hibás válasz0/41ms316 KiB
14Hibás válasz0/42ms316 KiB
15Hibás válasz0/52ms316 KiB
16Hibás válasz0/62ms316 KiB
17Hibás válasz0/62ms500 KiB