738 2022. 01. 03 14:56:30 Szin Attila Benzinkút üzemeltetés (55) cpp14 Elfogadva 55/55 6ms 4024 KiB
#include <bits/stdc++.h>
using namespace std;
const int c = 2 * 1e3;
typedef long long ll;

int dp[c], p[c];
pair<int, int> v[c];

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n,k;
    cin >> n >> k;

    for(int i = 0; i < n; i++) {
        cin >> v[i].first >> v[i].second;
    }

    for(int i = 0; i < n; i++) {
        dp[i] = v[i].second;
        p[i] = i;
        for(int j = 0; j < i && v[j].first + k <= v[i].first; j++) {
            if(dp[i] < dp[j] + v[i].second) {
                dp[i] = dp[j] + v[i].second;
                p[i] = j;
            }
        }
    }
    int mo, maxi = 0;
    for(int i = 0; i < n; i++) {
        if(dp[i] > maxi) {
            maxi = dp[i];
            mo = i;
        }
    }

    stack<int> ki;
    int curr = mo;
    while(curr != p[curr]) {
        ki.push(curr+1);
        curr = p[curr];
    }
    cout << maxi << "\n" << ki.size() + 1 << " " << curr+1;
    while(!ki.empty()) {
        cout << " " << ki.top();
        ki.pop();
    }

    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1836 KiB
2 Elfogadva 0/0 6ms 2208 KiB
3 Elfogadva 3/3 3ms 2532 KiB
4 Elfogadva 3/3 3ms 2524 KiB
5 Elfogadva 3/3 3ms 2736 KiB
6 Elfogadva 3/3 3ms 2820 KiB
7 Elfogadva 3/3 3ms 2924 KiB
8 Elfogadva 3/3 2ms 3012 KiB
9 Elfogadva 3/3 3ms 3140 KiB
10 Elfogadva 3/3 3ms 3224 KiB
11 Elfogadva 3/3 3ms 3496 KiB
12 Elfogadva 3/3 3ms 3456 KiB
13 Elfogadva 4/4 4ms 3472 KiB
14 Elfogadva 4/4 4ms 3800 KiB
15 Elfogadva 5/5 4ms 3880 KiB
16 Elfogadva 6/6 4ms 4024 KiB
17 Elfogadva 6/6 6ms 4012 KiB