133652025-01-07 17:17:54PajerLeviBenzinkút üzemeltetés (55)cpp17Accepted 55/552ms1588 KiB
#include<bits/stdc++.h>

using namespace std;

int main(){
	int n, k;
	cin >> n >> k;
	vector<int> t(n), h(n);
	for(int i=0;i<n;i++){
		cin >> t[i] >> h[i];
	}
	vector<int> firstGood(n);
	int j=n-1;
	for(int i=n-1;0<=i;i--){
		while(0<=j && t[i]<t[j]+k) j--;
		firstGood[i]=j;
	}
	vector<int> dp(n);
	vector<vector<int>> used(n);
	dp[0]=h[0];
	used[0].push_back(0);
	for(int i=1;i<n;i++){
		int newElemVal=0<=firstGood[i]?dp[firstGood[i]]+h[i]:h[i];
		if(dp[i-1]<newElemVal){
			dp[i]=newElemVal;
			if(0<=firstGood[i]) used[i]=used[firstGood[i]];
			used[i].push_back(i);
		}
		else{
			dp[i]=dp[i-1];
			used[i]=used[i-1];
		}
	}
	cout << dp[n-1] << '\n' << used[n-1].size();
	for(int x : used[n-1]){
		cout << ' ' << x+1;
	}
}
SubtaskSumTestVerdictTimeMemory
base55/55
1Accepted0/01ms316 KiB
2Accepted0/02ms1588 KiB
3Accepted3/31ms316 KiB
4Accepted3/31ms316 KiB
5Accepted3/31ms316 KiB
6Accepted3/31ms316 KiB
7Accepted3/31ms316 KiB
8Accepted3/31ms508 KiB
9Accepted3/31ms316 KiB
10Accepted3/31ms316 KiB
11Accepted3/31ms316 KiB
12Accepted3/31ms588 KiB
13Accepted4/42ms820 KiB
14Accepted4/42ms820 KiB
15Accepted5/52ms1172 KiB
16Accepted6/62ms1336 KiB
17Accepted6/62ms1332 KiB