349 2021. 10. 25 16:57:04 goczbali Benzinkút üzemeltetés (55) cpp14 Elfogadva 55/55 4ms 4760 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main() {
    int n, k;
    cin >> n >> k;

    vector<ll> d(n + 1);
    vector<ll> c(n + 1);

    for (int i = 1; i <= n; i++) {
        cin >> d[i] >> c[i];
    }

    vector<ll> dp(n + 1);
    vector<vector<bool>> s(n + 1, vector<bool>(n + 1));

    for (int i = 1; i <= n; i++) {
        dp[i] = dp[i - 1];
        s[i] = s[i - 1];

        long j = distance(d.begin(), upper_bound(d.begin(), d.end(), d[i] - k)) - 1;
        if (j < 0) j = 0;

        if (c[i] + dp[j] > dp[i - 1]) {
            dp[i] = c[i] + dp[j];
            s[i] = s[j];
            s[i][i] = true;
        }
    }

    int count = 0;

    for (int i = 1; i <= n; i++) {
        if (s[n][i]) {
            count++;
        }
    }

    cout << dp[n] << endl;
    cout << count << " ";
    for (int i = 1; i <= n; i++) {
        if (s[n][i]) {
            cout << i << " ";
        }
    }
    cout << endl;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1816 KiB
2 Elfogadva 0/0 4ms 2336 KiB
3 Elfogadva 3/3 3ms 2172 KiB
4 Elfogadva 3/3 3ms 2388 KiB
5 Elfogadva 3/3 3ms 2528 KiB
6 Elfogadva 3/3 3ms 2740 KiB
7 Elfogadva 3/3 3ms 2976 KiB
8 Elfogadva 3/3 3ms 3196 KiB
9 Elfogadva 3/3 3ms 3288 KiB
10 Elfogadva 3/3 3ms 3384 KiB
11 Elfogadva 3/3 3ms 3468 KiB
12 Elfogadva 3/3 3ms 3796 KiB
13 Elfogadva 4/4 3ms 4024 KiB
14 Elfogadva 4/4 4ms 4132 KiB
15 Elfogadva 5/5 4ms 4184 KiB
16 Elfogadva 6/6 4ms 4472 KiB
17 Elfogadva 6/6 4ms 4760 KiB