133652025-01-07 17:17:54PajerLeviBenzinkút üzemeltetés (55)cpp17Elfogadva 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;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base55/55
1Elfogadva0/01ms316 KiB
2Elfogadva0/02ms1588 KiB
3Elfogadva3/31ms316 KiB
4Elfogadva3/31ms316 KiB
5Elfogadva3/31ms316 KiB
6Elfogadva3/31ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms508 KiB
9Elfogadva3/31ms316 KiB
10Elfogadva3/31ms316 KiB
11Elfogadva3/31ms316 KiB
12Elfogadva3/31ms588 KiB
13Elfogadva4/42ms820 KiB
14Elfogadva4/42ms820 KiB
15Elfogadva5/52ms1172 KiB
16Elfogadva6/62ms1336 KiB
17Elfogadva6/62ms1332 KiB