2512021-03-06 16:39:22mraronBefektetéscpp14Accepted 40/4034ms2680 KiB
#include<bits/stdc++.h>
using namespace std;
using ll = long long ;

#define chkmx(x,y) (x)=max((x),(y))

const int MAXN=5001, MAXK=5001;

int n,k;
ll dp[2][MAXK];

struct Property {
	ll price, value, tax;
	bool operator<(const Property& other) const {
		return tax<other.tax;
	}
};

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	
	cin>>n>>k;
	vector<Property> lst(n);
	for(int i=0;i<n;++i) {
		cin>>lst[i].price>>lst[i].value>>lst[i].tax;
	}
	
	sort(lst.begin(), lst.end());
	
	ll ans=0;
	for(int i=1;i<=n;++i) {
		for(int j=0;j<=k;++j) {
			dp[i&1][j]=dp[(i&1)^1][j];
		}
		
		for(int j=0;j+lst[i-1].price<=k;++j) {
			chkmx(dp[i&1][j], dp[(i&1)^1][j+lst[i-1].price]+lst[i-1].value);
		}
		
		for(int j=lst[i-1].tax;j<=k;++j) {
			chkmx(ans, dp[i&1][j]);
		}
	}
	
	cout<<ans<<"\n";
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/02ms1768 KiB
2Accepted0/03ms1964 KiB
3Accepted2/21ms1872 KiB
4Accepted2/21ms1872 KiB
5Accepted1/11ms1876 KiB
6Accepted2/21ms1892 KiB
7Accepted2/21ms1896 KiB
8Accepted2/21ms1900 KiB
9Accepted2/21ms1908 KiB
10Accepted2/21ms1908 KiB
11Accepted3/38ms2120 KiB
12Accepted3/38ms2144 KiB
13Accepted3/38ms2176 KiB
14Accepted3/38ms2204 KiB
15Accepted3/38ms2236 KiB
16Accepted4/48ms2264 KiB
17Accepted1/134ms2368 KiB
18Accepted1/128ms2424 KiB
19Accepted1/128ms2480 KiB
20Accepted1/128ms2544 KiB
21Accepted1/128ms2612 KiB
22Accepted1/128ms2680 KiB