235892026-01-25 22:08:00sarminBenzinkút üzemeltetés (55)cpp17Hibás válasz 39/551ms316 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// const ll MOD = 1e9+7;

#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define int long long

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, k; cin >> n >> k;
    vector<int> dp(n+1, 0);
    vector<pair<int, int>> a(n+1);
    for (int i = 1; i <= n; i++) {
    	cin >> a[i].first >> a[i].second;
    }
    
    vector<int> honnan(n+1, -1);
    for (int i = 1; i <= n; i++) {
    	int m = 0, ind = -1;
    	for (int j = i-1; j >= 1; j--) {
    		if (a[i].first - a[j].first >= k && dp[j] != dp[j-1]) {
    			m = dp[j]; ind = j; break;
    		}
    	}
    	dp[i] = max({m+a[i].second, dp[i-1], a[i].first});
    	honnan[i] = ind;
    	if (dp[i] == dp[i-1]) {
    		if (honnan[i-1] == -1) honnan[i] = i-1;
    		else honnan[i] = honnan[i-1];
    	}
    	
    }
    cout << dp[n] << "\n";
    vector<int> res;
    res.push_back(n);
    for (int i = n; honnan[i] != -1; i = honnan[i]) {
    	res.push_back(honnan[i]);
    }
    cout << res.size() << " ";
    reverse(all(res));
    for (int i : res) cout << i << " ";

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base39/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Hibás válasz0/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Hibás válasz0/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Hibás válasz0/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Hibás válasz0/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Hibás válasz0/41ms316 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/61ms316 KiB
17Elfogadva6/61ms316 KiB