236082026-01-26 10:02:02sarminBenzinkút üzemeltetés (55)cpp17Elfogadva 55/551ms532 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<pair<int, int>> honnan(n+1, {-1, -1}); // {honnan, amit hozzávesz}
    for (int i = 1; i <= n; i++) {
    	int j = i-1;
    	while (a[i].first - a[j].first < k && j >= 1) j--;
    	dp[i] = max(dp[j]+a[i].second, dp[i-1]);
    	if (dp[i] == dp[i-1]) {
    		honnan[i] = {i-1, -1};
    	} else {
    		honnan[i] = {j, i};
    	}
    }
    cout << dp[n] << "\n";
    vector<int> res;
    for (int i = n; i != -1; i = honnan[i].first) {
    	if (honnan[i].second != -1) res.push_back(honnan[i].second);
    }
    
    cout << res.size() << " ";
    reverse(all(res));
    for (int i : res) cout << i << " ";

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