229012026-01-16 08:10:41sklausBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms512 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct kut {
    int tav;
    int hasz;
    int id;
};

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

    vector<kut> t(n + 1);
    for (int i = 1; i <= n; i++) {
        cin >> t[i].tav >> t[i].hasz;
        t[i].id=i;
    }
    t[0].tav = -99999999;
    t[0].hasz = 0;
    vector<int> dp(n + 1, 0);
    for (int i = 1; i <= n; i++) {
        int j = i - 1;
        while (j > 0 && (t[i].tav - t[j].tav < k)) {
            j--;
        }
        dp[i] = max(dp[i-1], t[i].hasz+dp[j]);
    }
    cout << dp[n] << endl;
    vector<int> vankut;
    int x = n;
    int szam=0;
    while (x > 0) {
        if (dp[x] == dp[x-1]) {
            x--;
        }
        else {
            vankut.push_back(t[x].id);
            int j = x - 1;
            while (j > 0 && (t[x].tav - t[j].tav < k)) {
                j--;
            }
            x = j;
        }
    }
    //for(int i=1; i<=n; i++){
      //  if(vankut[i]==-1)vankut.erase(vankut.begin(), vankut.begin()+i);
    //}
    cout << vankut.size() << " ";
    for (int i = vankut.size() - 1; i >= 0; i--) {
        if(vankut[i]!=-1)
        cout << vankut[i] << " ";
    }
    return 0;
}

RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms500 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva3/31ms512 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms328 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/61ms364 KiB
17Elfogadva6/61ms388 KiB