133612025-01-07 17:06:50PajerLeviBenzinkút üzemeltetés (55)cpp17Wrong answer 18/553ms1588 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];
	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
base18/55
1Accepted0/01ms316 KiB
2Wrong answer0/03ms1588 KiB
3Wrong answer0/31ms508 KiB
4Wrong answer0/31ms500 KiB
5Accepted3/31ms316 KiB
6Wrong answer0/31ms500 KiB
7Accepted3/31ms512 KiB
8Wrong answer0/31ms328 KiB
9Wrong answer0/31ms352 KiB
10Wrong answer0/31ms316 KiB
11Wrong answer0/31ms316 KiB
12Wrong answer0/32ms756 KiB
13Wrong answer0/42ms820 KiB
14Wrong answer0/42ms820 KiB
15Wrong answer0/52ms1076 KiB
16Accepted6/62ms1332 KiB
17Accepted6/63ms1368 KiB