137462025-01-08 16:27:18tomi7Benzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms512 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    int n, k;cin>>n>>k;
    vector<int> a(n), b(n);
    for(int i=0;i<n;i++){
        cin>>a[i]>>b[i];
    }
    vector<int> dp(n);
    vector<bool> check(n, false);
    dp[0]=b[0];
    check[0]=true;
    for(int i=1;i<n;i++){
        int h=-1;
        for(int j=0;j<n;j++){
            if(a[i]-a[j]>=k){
                h=j;
            }
        }
        if(h==-1){
            if(b[i]>dp[i-1]){
                dp[i]=b[i];
                check[i]=true;
            }else{
                dp[i]=dp[i-1];
            }
        }else{
            if(b[i]+dp[h]>dp[i-1]){
                dp[i]=b[i]+dp[h];
                check[i]=true;
            }else{
                dp[i]=dp[i-1];
            }
        }
   //     cout<<check[i]<<' ';
    }
    cout<<dp[n-1]<<'\n';
    vector<int> oans;
    int x=n-1;
    int hi=-1;
    while(x>=0){
      //      cout<<x<<endl;
        if(!check[x]){
            x--;
            continue;
        }
        if(hi==-1){
            hi=x;
            oans.push_back(hi);
      //      cout<<hi<<' '<<x<<endl;
            x--;
        }else{
            if(a[hi]-a[x]>=k){
                hi=x;
                oans.push_back(hi);
    //            cout<<hi<<' '<<x<<endl;
            }
            x--;
        }
    }
    cout<<oans.size()<<' ';
    reverse(oans.begin(), oans.end());
    for(int i=0;i<oans.size();i++){
        cout<<oans[i]+1<<' ';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms512 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/32ms500 KiB
13Elfogadva4/42ms316 KiB
14Elfogadva4/42ms316 KiB
15Elfogadva5/52ms316 KiB
16Elfogadva6/62ms316 KiB
17Elfogadva6/62ms316 KiB