207782026-01-08 20:46:29szabelrBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms508 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, k;
    cin >> n >> k;
    vector<int>dp(n + 1, 0);
    vector<int>tavok;
    vector<int>res;
    for (int i = 1; i <= n; i++)
    {
        int t,h; cin >> t>>h;
        tavok.push_back(t);
        if (t - k < 0)
        {
            dp[i] = max(dp[i - 1], h);
        }
        else
        {
            auto it = upper_bound(tavok.begin(), tavok.begin()+(i-1), (t - k));
            int idx = distance(tavok.begin(), it);

            dp[i] = max(dp[i - 1], h + dp[idx]);
        }
    }
    int j = n;
    while (j > 0) {
        if (dp[j] != dp[j - 1]) {
            res.push_back(j);
            auto it = upper_bound(tavok.begin(), tavok.begin() + j - 1, tavok[j - 1] - k);
            j = distance(tavok.begin(), it);
        }
        else {
            j--;
        }
    }
    reverse(res.begin(), res.end());
    cout << dp[n] << endl;
    cout << res.size() << " ";
    for (auto x : res)
        cout << x << " ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/02ms316 KiB
2Elfogadva0/02ms508 KiB
3Elfogadva3/32ms316 KiB
4Elfogadva3/32ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms376 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/41ms500 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/61ms316 KiB
17Elfogadva6/61ms316 KiB