215842026-01-13 16:50:19algoproBenzinkút üzemeltetés (55)cpp17Elfogadva 55/553ms1588 KiB
// UUID: 6c8bd629-3b2d-4c5b-9e59-4bd7996f2bf2
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, k; cin >> n >> k;
	vector<vector<int>> x(n+1, vector<int>(2));
	for(int i = 1; i <= n; i++) {
		cin >> x[i][0] >> x[i][1];
	}
	vector<int> dp(n+1);
	vector<vector<int>> dpnum(n+1, vector<int>(0));
	int now = 0;
	int diff = 0;
	for(int i = 1; i <=n; i++) {
		diff = x[i][0];
		while(now < i-1) {
			if(diff - x[now+1][0] >= k) {
				now++;
			}
			else break;
		}
		if(dp[i-1] >= dp[now] + x[i][1]) {
			dp[i] = dp[i-1];
			dpnum[i] = dpnum[i-1];
		}
		else {
			dp[i] = dp[now] + x[i][1];
			dpnum[i] = dpnum[now];
			dpnum[i].push_back(i);
		}
	}
	cout << dp[n] << endl;
	cout << dpnum[n].size() << " ";
	for(int i = 0; i < dpnum[n].size(); i++) cout << dpnum[n][i] << " ";
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms1588 KiB
3Elfogadva3/31ms512 KiB
4Elfogadva3/31ms508 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms316 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms436 KiB
11Elfogadva3/32ms316 KiB
12Elfogadva3/32ms652 KiB
13Elfogadva4/42ms940 KiB
14Elfogadva4/42ms820 KiB
15Elfogadva5/52ms1076 KiB
16Elfogadva6/62ms1332 KiB
17Elfogadva6/63ms1332 KiB