133792025-01-07 18:00:39CWMBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms508 KiB
#include <iostream>
#include <vector>
#include <queue>
#include <climits>
#include <cmath>
#include <map>
#include <algorithm>
#include <set>
#include <string>

using namespace std;
#define size_t int
#define int long long

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k;
    cin >> n >> k;
    vector<int> DP(n);
    vector<int> dists(n);
    vector<int> lasts(n);
    for (size_t i = 0; i < n; i++)
    {
        int dist, profit;
        cin >> dist >> profit;
        dists[i] = dist;
        if (i == 0) {
            DP[0]=profit;
            lasts[0] = -1;
        }
        else {
            int res = -1;
            int last = -1;
            for (size_t j = 0; j < i; j++)
            {
                if (dists[j] + k <= dist) {
                    if (DP[j] + profit > res) {
                        res = DP[j] + profit;
                        last = j;
                    }
                }
                else {
                    if (DP[j] > res) {
                        res = DP[j];
                        last = j;
                    }

                }
            }
            if (res < profit) {
                res = profit;
                last = -1;
            }
            DP[i] = res;
            lasts[i] = last;
        }
    }
    bool lastSelected = false;
    if (dists[n - 1] >= dists[lasts[n - 1]] + k) lastSelected = true;
    vector<int> revOrd;
    if (lastSelected) revOrd.push_back(n - 1);
    int cIdx = n - 1;
    while (cIdx > -1) {
        if (cIdx != n - 1) {
            revOrd.push_back(cIdx);
        }
        cIdx = lasts[cIdx];
    }
    cout << DP[n - 1] << "\n";
    cout << revOrd.size() << " ";
    for (size_t i = 0; i < revOrd.size(); i++)
    {
        cout << revOrd[revOrd.size() - i - 1] + 1 << " ";
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms508 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/52ms316 KiB
16Elfogadva6/62ms316 KiB
17Elfogadva6/62ms316 KiB