3892 2023. 03. 03 18:36:33 Erik_Gepard Benzinkút üzemeltetés (55) cpp17 Elfogadva 55/55 3ms 4288 KiB
#include<bits/stdc++.h>
using namespace std;

void solve(){
    int n, k;
    cin>>n>>k;
    vector<pair<int, int>> kut(n+1, {0, 0});
    for(pair<int, int> &x : kut) cin>>x.first>>x.second;
    vector<int> dp(n+1);
    vector<int> parent(n+1);
    for(int i=0; i<n; i++){
        dp[i]=kut[i].second;
        parent[i]=i;
        for(int j=0; j<i; j++){
            if(kut[i].first-kut[j].first>=k){
                if(dp[i]<dp[j]+kut[i].second){
                    dp[i]=dp[j]+kut[i].second;
                    parent[i]=j;
                }
            }
        }
    }
    int ans=0, ansh=0;
    for(int i=0; i<n; i++){
        if(dp[i]>ans){
            ans=dp[i];
            ansh=i;
        }
    }
    stack<int> val;
    int curr=ansh;
    while(curr!=parent[curr]){
        val.push(curr+1);
        curr=parent[curr];
    }
    cout<<ans<<"\n"<<val.size()+1<<" "<<curr+1<<" ";
    while(!val.empty()){
        cout<<val.top()<<" ";
        val.pop();
    }
    return;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    solve();
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 55/55
1 Elfogadva 0/0 3ms 1828 KiB
2 Elfogadva 0/0 3ms 2072 KiB
3 Elfogadva 3/3 3ms 2232 KiB
4 Elfogadva 3/3 3ms 2444 KiB
5 Elfogadva 3/3 3ms 2664 KiB
6 Elfogadva 3/3 3ms 2868 KiB
7 Elfogadva 3/3 2ms 2948 KiB
8 Elfogadva 3/3 3ms 3184 KiB
9 Elfogadva 3/3 3ms 3400 KiB
10 Elfogadva 3/3 2ms 3476 KiB
11 Elfogadva 3/3 3ms 3608 KiB
12 Elfogadva 3/3 3ms 3700 KiB
13 Elfogadva 4/4 3ms 3920 KiB
14 Elfogadva 4/4 3ms 3952 KiB
15 Elfogadva 5/5 3ms 4032 KiB
16 Elfogadva 6/6 3ms 4288 KiB
17 Elfogadva 6/6 3ms 4244 KiB