215932026-01-13 17:01:10algoproBenzinkút üzemeltetés (55)cpp17Elfogadva 55/552ms508 KiB
// UUID: fd671606-5426-472c-bc4c-93c07c099820
#include <bits/stdc++.h>
using namespace std;

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

	vector<long long> t(n + 1), h(n + 1), dp(n + 1, 0);
	for (int i = 1; i <= n; i++) cin >> t[i] >> h[i];

	vector<int> elozo(n + 1, 0), mego;
	vector<bool> van(n + 1, false);

	for (int i = 1; i <= n; i++) {
		int b = 1, j = i - 1, ans = 0;
		while (b <= j) {
			int m = (b + j) / 2;
			if(t[m] <= t[i] - k) {
				ans = m;
				b = m + 1;
			} else {
				j = m - 1;
			}
		}
		elozo[i] = ans;
	}

	for (int i = 1; i <= n; i++) {
		long long edmax = dp[i - 1];
		long long hasz = dp[elozo[i]] + h[i];

		if (hasz > edmax) {
			dp[i] = hasz;
			van[i] = true;
		} else dp[i] = edmax;
	}

	int x = n;
	while (x > 0) {
		if (van[x]) {
			mego.push_back(x);
			x = elozo[x];
		} else x--;
	}

	reverse(mego.begin(), mego.end());

	cout << dp[n] << '\n';
	cout << mego.size();
	for (int i : mego) {
		cout << " " << i;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms316 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms500 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms388 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms508 KiB
12Elfogadva3/31ms508 KiB
13Elfogadva4/41ms408 KiB
14Elfogadva4/41ms316 KiB
15Elfogadva5/51ms508 KiB
16Elfogadva6/61ms316 KiB
17Elfogadva6/61ms316 KiB