133612025-01-07 17:06:50PajerLeviBenzinkút üzemeltetés (55)cpp17Hibás válasz 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;
	}
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base18/55
1Elfogadva0/01ms316 KiB
2Hibás válasz0/03ms1588 KiB
3Hibás válasz0/31ms508 KiB
4Hibás válasz0/31ms500 KiB
5Elfogadva3/31ms316 KiB
6Hibás válasz0/31ms500 KiB
7Elfogadva3/31ms512 KiB
8Hibás válasz0/31ms328 KiB
9Hibás válasz0/31ms352 KiB
10Hibás válasz0/31ms316 KiB
11Hibás válasz0/31ms316 KiB
12Hibás válasz0/32ms756 KiB
13Hibás válasz0/42ms820 KiB
14Hibás válasz0/42ms820 KiB
15Hibás válasz0/52ms1076 KiB
16Elfogadva6/62ms1332 KiB
17Elfogadva6/63ms1368 KiB