8101 2024. 01. 12 13:12:40 TuruTamas Benzinkút üzemeltetés (55) cpp17 Elfogadva 55/55 4ms 7888 KiB
#include <bits/stdc++.h>
using namespace std;

#ifdef DEBUG
ifstream in_file("minta/be2.txt");
#define input in_file
#define INTHENAMEOFGOD
#else
#define input cin
#define INTHENAMEOFGOD \
    ios::sync_with_stdio(0); \
    cin.tie(0); \
    cout.tie(0);
#endif
typedef long long ll;
typedef vector<ll> vi;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef pair<ll, ll> pii;

struct megoldas {
    ll ertek;
    vi kutak;
};

ll N, K;
vi d, H;
vector<megoldas> opt;

int main() {
    input >> N >> K;
    d.resize(N);
    H.resize(N); 
    input >> d[0] >> H[0];
    opt.push_back((megoldas) {
        .ertek = H[0],
        .kutak = {0},
    });
    for (ll n = 1; n < N; n++) {
        input >> d[n] >> H[n];
        if (d[n] - K < d[0]) {
            auto elozo = opt.back();
            if (H[n] > elozo.ertek) {
                opt.push_back((megoldas) {
                    .ertek = H[n],
                    .kutak = {n},
                });
            } else {
                opt.push_back(opt.back());
            }
            continue;
        }
        ll i = lower_bound(d.begin()+1, d.begin()+n, d[n]-K) - d.begin();
        if (d[i] > d[n]-K) {
            i--;
        }
        assert(i >= 0);
        assert(d[i] <= d[n]-K);
        if (opt[i].ertek + H[n] > opt.back().ertek) {
            opt.push_back((megoldas) {
                .ertek = opt[i].ertek + H[n],
                .kutak = opt[i].kutak,
            }),
            opt.back().kutak.push_back(n);
        } else {
            opt.push_back(opt.back());
        }
    }
    cout << opt.back().ertek << "\n" << opt.back().kutak.size() << " ";
    for (ll kut : opt.back().kutak) {
        cout << kut+1 << " ";
    }
    cout << endl;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1812 KiB
2 Elfogadva 0/0 4ms 7164 KiB
3 Elfogadva 3/3 3ms 2264 KiB
4 Elfogadva 3/3 3ms 2424 KiB
5 Elfogadva 3/3 3ms 2640 KiB
6 Elfogadva 3/3 3ms 2728 KiB
7 Elfogadva 3/3 3ms 2724 KiB
8 Elfogadva 3/3 3ms 2728 KiB
9 Elfogadva 3/3 3ms 2884 KiB
10 Elfogadva 3/3 3ms 3136 KiB
11 Elfogadva 3/3 3ms 3288 KiB
12 Elfogadva 3/3 3ms 4328 KiB
13 Elfogadva 4/4 4ms 5276 KiB
14 Elfogadva 4/4 4ms 5588 KiB
15 Elfogadva 5/5 4ms 6488 KiB
16 Elfogadva 6/6 4ms 7388 KiB
17 Elfogadva 6/6 4ms 7888 KiB