238472026-01-30 19:10:42matemakaiBefektetéscpp17Hibás válasz 0/4037ms32768 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n, x;
	cin >> n >> x;
	vector<tuple<int, int, int>> vec(n);
	for (int i = 0; i < n; ++i) {
		cin >> get<1>(vec[i]) >> get<2>(vec[i]) >> get<0>(vec[i]);
	}
	sort(vec.begin(), vec.end());
	vector<int> p(n), v(n), c(n);
	for (int i = 0; i < n; ++i) {
		auto [c_i, p_i, v_i] = vec[i];
		c[i] = c_i;
		p[i] = p_i;
		v[i] = v_i;
	}

	vector<vector<long long>> dp(n + 1, vector<long long>(x + 1, 0));

	for (int j = 0; j <= x; ++j) {
		dp[0][j] = 0;
	}

	for (int i = 1; i <= n; ++i) {
		for (int j = p[i - 1]; j <= x; ++j) {
			dp[i][j] = dp[i - 1][j];
			dp[i][j] = max(dp[i][j - 1], dp[i - 1][j - p[i - 1]] + v[i - 1]);
		}
	}	

	long long ans = 0;

	for (int i = 1; i <= n; ++i) {
		ans = max(ans, dp[i][x - c[i - 1]]);
	}

	cout << ans << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/40
1Elfogadva0/01ms508 KiB
2Hibás válasz0/08ms8244 KiB
3Hibás válasz0/21ms316 KiB
4Hibás válasz0/21ms316 KiB
5Hibás válasz0/11ms316 KiB
6Hibás válasz0/21ms564 KiB
7Hibás válasz0/21ms564 KiB
8Hibás válasz0/21ms564 KiB
9Hibás válasz0/21ms564 KiB
10Hibás válasz0/22ms564 KiB
11Hibás válasz0/337ms31644 KiB
12Hibás válasz0/330ms31684 KiB
13Hibás válasz0/337ms31796 KiB
14Hibás válasz0/330ms31764 KiB
15Hibás válasz0/337ms31856 KiB
16Hibás válasz0/437ms31756 KiB
17Futási hiba0/130ms32768 KiB
18Futási hiba0/130ms32768 KiB
19Futási hiba0/130ms32768 KiB
20Futási hiba0/137ms32768 KiB
21Futási hiba0/137ms32768 KiB
22Futási hiba0/137ms32768 KiB