251 2021. 03. 06 16:39:22 mraron Befektetés cpp14 Elfogadva 40/40 34ms 2680 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 40/40
1 Elfogadva 0/0 2ms 1768 KiB
2 Elfogadva 0/0 3ms 1964 KiB
3 Elfogadva 2/2 1ms 1872 KiB
4 Elfogadva 2/2 1ms 1872 KiB
5 Elfogadva 1/1 1ms 1876 KiB
6 Elfogadva 2/2 1ms 1892 KiB
7 Elfogadva 2/2 1ms 1896 KiB
8 Elfogadva 2/2 1ms 1900 KiB
9 Elfogadva 2/2 1ms 1908 KiB
10 Elfogadva 2/2 1ms 1908 KiB
11 Elfogadva 3/3 8ms 2120 KiB
12 Elfogadva 3/3 8ms 2144 KiB
13 Elfogadva 3/3 8ms 2176 KiB
14 Elfogadva 3/3 8ms 2204 KiB
15 Elfogadva 3/3 8ms 2236 KiB
16 Elfogadva 4/4 8ms 2264 KiB
17 Elfogadva 1/1 34ms 2368 KiB
18 Elfogadva 1/1 28ms 2424 KiB
19 Elfogadva 1/1 28ms 2480 KiB
20 Elfogadva 1/1 28ms 2544 KiB
21 Elfogadva 1/1 28ms 2612 KiB
22 Elfogadva 1/1 28ms 2680 KiB