236222026-01-26 16:26:10algoproBenzinkút üzemeltetés (55)cpp17Hibás válasz 0/557ms508 KiB
// UUID: db96b1e6-f7e2-4ca9-b7fd-f8819152d654
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k;
    cin >> n >> k;
    vector<pair<long long, long long>> dis(n+1);
    for(int i = 1; i <= n; i++){
        cin >> dis[i].first >> dis[i].second;
    }
    dis[0].first = dis[1].first - k;
    dis[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(dis[i].first - dis[j].first >= k){
                dp[i] = max(dp[i-1], dp[j] + dis[i].second);
                if(dp[i-1] < dp[j] + dis[i].second){
                    ans[i] = ans[j];
                    ans[i].push_back(i);
                }
                else{
                    ans[i] = ans[i-1];
                    break;
                }
            }
        }
        cout << dp[n] << "\n" << ans[n].size();
        for(int x : ans[n]){
            cout << " " << x;
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/55
1Hibás válasz0/01ms508 KiB
2Hibás válasz0/07ms508 KiB
3Hibás válasz0/31ms316 KiB
4Hibás válasz0/31ms316 KiB
5Hibás válasz0/31ms316 KiB
6Hibás válasz0/31ms316 KiB
7Hibás válasz0/31ms316 KiB
8Hibás válasz0/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Hibás válasz0/31ms500 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/33ms432 KiB
13Hibás válasz0/43ms316 KiB
14Hibás válasz0/44ms316 KiB
15Hibás válasz0/54ms508 KiB
16Hibás válasz0/66ms408 KiB
17Hibás válasz0/67ms316 KiB