133732025-01-07 17:30:47EsVagyBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms512 KiB
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

struct stop {
    int dist, val;

    bool operator<(const stop& other) const
    {
        return this->dist < other.dist;
    }
};

int main()
{
    int n, k;
    cin >> n >> k;
    vector<stop> stops(n);
    for (int i = 0; i < n; i++) {
        cin >> stops[i].dist >> stops[i].val;
    }

    vector<int> maximums(n, 0);
    vector<int> parents(n, -1);
    vector<bool> added(n, false);
    for (int i = 0; i < n; i++) {
        auto previous = upper_bound(stops.begin(), stops.end(), (stop) { stops[i].dist - k });
        if (stops[i].dist - previous->dist < k) {
            previous--;
        }
        if (i != 0) {
            maximums[i] = maximums[i - 1];
            parents[i] = i - 1;
        }
        int last_index = previous - stops.begin();
        if (last_index >= 0) {
            int next = maximums[last_index] + stops[i].val;
            if (maximums[i] < next) {
                maximums[i] = next;
                parents[i] = last_index;
                added[i] = true;
            }
        } else {
            if (maximums[i] < stops[i].val) {
                maximums[i] = stops[i].val;
                parents[i] = -1;
                added[i] = true;
            }
        }
    }
    cout << maximums[n - 1] << "\n";
    vector<int> ans;
    int start = n - 1;
    while (!added[start]) {
        start = parents[start];
    }
    while (start >= 0) {
        ans.push_back(start);
        start = parents[start];
        while (start >= 0 && !added[start]) {
            start = parents[start];
        }
    }
    reverse(ans.begin(), ans.end());
    cout << ans.size() << " ";
    for (int i : ans) {
        cout << i + 1 << " ";
    }
    cout << "\n";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms368 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms512 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/42ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/61ms316 KiB
17Elfogadva6/61ms316 KiB