6326 2023. 11. 18 15:46:38 kukkerman Benzinkút üzemeltetés (55) cpp14 Elfogadva 55/55 3ms 4452 KiB
#include <iostream>
#include <vector>
#include <algorithm>

using Benzinkutak = std::vector<std::pair<int, int>>;

void beolvas(std::istream &in, Benzinkutak &b, int &k) {
    int n;
    in >> n >> k;

    b.resize(n);
    for (auto i = 0; i < n; i++) {
        in >> b[i].first >> b[i].second;
    }
}

void feldolgoz(const Benzinkutak &b, int k) {
    const auto n = static_cast<int>(b.size());
    std::vector<std::pair<int, int>> dp(n + 1);
    
    dp[0] = { -1, 0 };
    for (auto i = 0; i < n; i++) {
        const auto elso_tiltott = std::upper_bound(b.begin(), b.end(), b[i].first - k, [](int tav, const auto &kut) {
            return tav < kut.first;
        }) - b.begin();

        const auto telepit_haszon = b[i].second + dp[elso_tiltott].second;
        const auto nem_telepit_haszon = dp[i].second;

        if (telepit_haszon < nem_telepit_haszon) {
            dp[i + 1] = { -1, nem_telepit_haszon };

        } else {
            dp[i + 1] = { static_cast<int>(elso_tiltott), telepit_haszon };
        }
    }

    std::vector<int> telepitett_indexek;
    auto i = n;
    while (i > 0) {
        if (dp[i].first >= 0) {
            telepitett_indexek.push_back(i);
            i = dp[i].first;

        } else {
            i--;
        }
    }

    std::cout << dp[n].second << std::endl;
    std::cout << telepitett_indexek.size() << ' ';
    for (auto ti = telepitett_indexek.crbegin(); ti != telepitett_indexek.crend(); ++ti) {
        std::cout << *ti << ' ';
    }
    std::cout << std::endl;
}

int main() {
    Benzinkutak b;
    int k;

    beolvas(std::cin, b, k);
    feldolgoz(b, k);

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1808 KiB
2 Elfogadva 0/0 3ms 2076 KiB
3 Elfogadva 3/3 3ms 2284 KiB
4 Elfogadva 3/3 3ms 2484 KiB
5 Elfogadva 3/3 3ms 2540 KiB
6 Elfogadva 3/3 3ms 2760 KiB
7 Elfogadva 3/3 3ms 2864 KiB
8 Elfogadva 3/3 3ms 3072 KiB
9 Elfogadva 3/3 3ms 3196 KiB
10 Elfogadva 3/3 3ms 3440 KiB
11 Elfogadva 3/3 3ms 3652 KiB
12 Elfogadva 3/3 3ms 3872 KiB
13 Elfogadva 4/4 3ms 4088 KiB
14 Elfogadva 4/4 3ms 4300 KiB
15 Elfogadva 5/5 3ms 4392 KiB
16 Elfogadva 6/6 3ms 4452 KiB
17 Elfogadva 6/6 3ms 4424 KiB