212422026-01-12 17:25:08algoproBenzinkút üzemeltetés (55)cpp17Accepted 55/553ms1592 KiB
// UUID: e3835b1d-59d9-492c-948d-1f445b3bb4f4
#include <bits/stdc++.h>
using namespace std;

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

    vector <pair<long long, long long>> tav(n+1);
    
    for (int i=1; i<=n; i++) {
        cin >> tav[i].first >> tav[i].second;
    }
    tav[0].first=tav[1].first-k;
    tav[0].second=0;

    vector <long long> dp(n+1);
    vector <vector<int>> ans(n+1);

    dp[0]=0;
     for (int i=1; i<=n; i++) {
       for (int j=i-1; j>-1; j--) {
           if (tav[i].first-tav[j].first>=k) {
               dp[i]=max(dp[i-1], dp[j]+tav[i].second);
               if (dp[i-1] < dp[j]+tav[i].second) {
                    ans[i]= ans[j];
                    ans[i].push_back(i);
               }
               else ans[i]=ans[i-1];
               //cout <<dp[i] << " "<< dp[i-1] << " | " << j << " + " << i << "\n";
               break; 
           }
       }
       //cout << "\n"; 

    }
    cout << dp[n] << "\n" << ans[n].size();
    for (int x : ans[n]) {
        cout << " " << x;
    }
}
SubtaskSumTestVerdictTimeMemory
base55/55
1Accepted0/01ms316 KiB
2Accepted0/03ms1592 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted3/31ms508 KiB
9Accepted3/31ms316 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms316 KiB
12Accepted3/31ms564 KiB
13Accepted4/42ms920 KiB
14Accepted4/42ms820 KiB
15Accepted5/52ms1076 KiB
16Accepted6/62ms1332 KiB
17Accepted6/62ms1332 KiB