6003 2023. 10. 15 12:31:13 Catt Benzinkút üzemeltetés (55) cpp17 Hibás válasz 12/55 4ms 3976 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct RestStop {
    int distance;
    int profit;
};

int main() {
    int N, K;
    cin >> N >> K;

    vector<RestStop> restStops(N);
    for (int i = 0; i < N; i++) {
        cin >> restStops[i].distance >> restStops[i].profit;
    }

    // Sorrendezzük a pihenőhelyeket a távolság alapján.
    sort(restStops.begin(), restStops.end(), [](const RestStop &a, const RestStop &b) {
        return a.distance < b.distance;
    });

    vector<long long> dp(N);
    vector<int> previous(N, -1);

    // Dinamikus programozás: dp[i] tárolja a maximális hasznot az i. pihenőhelyig.
    for (int i = 0; i < N; i++) {
        dp[i] = restStops[i].profit;

        for (int j = 0; j < i; j++) {
            int distance = restStops[i].distance - restStops[j].distance;

            if (distance >= K) {
                dp[i] = max(dp[i], dp[j] + restStops[i].profit);
                previous[i] = j;
            }
        }
    }

    // Keresés a maximális haszonhoz és az épített benzinkutak helyéhez.
    long long maxProfit = *max_element(dp.begin(), dp.end());
    int maxIndex = max_element(dp.begin(), dp.end()) - dp.begin();
    vector<int> gasStations;

    while (maxIndex >= 0) {
        gasStations.push_back(maxIndex);
        maxIndex = previous[maxIndex];
    }

    cout << maxProfit << endl;
    cout << gasStations.size() << " ";
    for (int i = gasStations.size() - 1; i >= 0; i--) {
        cout << gasStations[i] + 1 << " ";  // +1 mert 1-től indexelünk
    }

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 12/55
1 Hibás válasz 0/0 3ms 1808 KiB
2 Hibás válasz 0/0 4ms 2024 KiB
3 Elfogadva 3/3 3ms 2212 KiB
4 Elfogadva 3/3 2ms 2300 KiB
5 Hibás válasz 0/3 2ms 2448 KiB
6 Elfogadva 3/3 2ms 2384 KiB
7 Hibás válasz 0/3 3ms 2664 KiB
8 Elfogadva 3/3 2ms 2632 KiB
9 Hibás válasz 0/3 3ms 2736 KiB
10 Hibás válasz 0/3 3ms 2948 KiB
11 Hibás válasz 0/3 3ms 3160 KiB
12 Hibás válasz 0/3 3ms 3412 KiB
13 Hibás válasz 0/4 3ms 3656 KiB
14 Hibás válasz 0/4 4ms 3664 KiB
15 Hibás válasz 0/5 4ms 3772 KiB
16 Hibás válasz 0/6 4ms 3908 KiB
17 Hibás válasz 0/6 4ms 3976 KiB