216092026-01-13 17:08:46algoproBenzinkút üzemeltetés (55)cpp17Elfogadva 55/551ms508 KiB
// UUID: 3b453e07-872b-4811-9aa4-4df0f55f29a5
#include <bits/stdc++.h>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
    cin.tie(nullptr);
	int n, k; cin >> n >> k;
	vector<int> pos(n + 1);
	vector<int> val(n + 1);
	for(int i = 1; i <= n; i++){
		cin >> pos[i] >> val[i];
	}
	vector<int> prv(n + 1, 0);
	for(int i = 1; i <= n; i++){
		for(int j = i - 1; j >= 1; j--){
			if(pos[i] - pos[j] >= k){
				prv[i] = j;
				break;
			}
		}
	}
	vector<int> dp(n + 1, 0);
	vector<int> from(n + 1, 0);
	for(int i = 1; i <= n; i++){
		int skip = dp[i - 1];
		int take = dp[prv[i]] + val[i]; // yooo mi a dihh??
		if(take > skip){
			dp[i] = take;
			from[i] = 1;
		} else {
			dp[i] = skip;
		}
	}
	vector<int> res;
	for(int i = n; i > 0; ){
		if(from[i] == 1){
			res.push_back(i);
			i = prv[i];
		} else {
			i--;
		}
	}
	reverse(res.begin(), res.end());
	cout << dp[n] << '\n';
	cout << res.size();
	for(int x : res){
		cout << " " << x;
	}
	cout << '\n';
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/01ms508 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/31ms316 KiB
13Elfogadva4/41ms316 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms316 KiB
16Elfogadva6/61ms316 KiB
17Elfogadva6/61ms316 KiB