2882021-07-04 22:58:02Valaki2Befektetéscpp14Hibás válasz 9/4043ms3472 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long

const ll maxn = 4000;
const ll maxk = 12000;

ll n, k;
ll dp[2][maxk+1];
ll max_ado[2][maxk+1];
ll ar[maxn+1];
ll ertek[maxn+1];
ll ado[maxn+1];

void solve() {
    cin >> n >> k;
    for(ll i = 1; i <= n; ++i) cin >> ar[i] >> ertek[i] >> ado[i];
    dp[1][ar[1] + ado[1]] = ertek[1];
    max_ado[1][ar[1] + ado[1]] = ado[1];
    for(ll i = 1; i < n; ++i) {
        for(ll j = 0; j <= k; ++j) {
            if(dp[(i + 1) % 2][j] < dp[i % 2][j]) {
                dp[(i + 1) % 2][j] = dp[i % 2][j];
                max_ado[(i + 1) % 2][j] = max_ado[i % 2][j];
            }
            if(dp[(i + 1) % 2][j - max_ado[i % 2][j] + max(max_ado[i % 2][j], ado[i + 1]) + ar[i + 1]] < dp[i % 2][j] + ertek[i + 1]) {
                dp[(i + 1) % 2][j - max_ado[i % 2][j] + max(max_ado[i % 2][j], ado[i + 1]) + ar[i + 1]] = dp[i % 2][j] + ertek[i + 1];
                max_ado[(i + 1) % 2][j - max_ado[i % 2][j] + max(max_ado[i % 2][j], ado[i + 1]) + ar[i + 1]] = max(max_ado[i % 2][j], ado[i + 1]);
            }
        }
    }
    ll maxi = 0;
    for(ll i = 0; i <= k; ++i) maxi = max(maxi, dp[n % 2][i]);
    cout << maxi << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base9/40
1Elfogadva0/02ms1988 KiB
2Hibás válasz0/04ms2196 KiB
3Elfogadva2/21ms2004 KiB
4Elfogadva2/21ms2008 KiB
5Elfogadva1/11ms2016 KiB
6Elfogadva2/21ms2040 KiB
7Hibás válasz0/21ms2040 KiB
8Hibás válasz0/21ms2044 KiB
9Elfogadva2/21ms2048 KiB
10Hibás válasz0/21ms2060 KiB
11Hibás válasz0/312ms2516 KiB
12Hibás válasz0/310ms2552 KiB
13Hibás válasz0/313ms2580 KiB
14Hibás válasz0/312ms2644 KiB
15Hibás válasz0/313ms2656 KiB
16Hibás válasz0/413ms2668 KiB
17Hibás válasz0/143ms3172 KiB
18Hibás válasz0/141ms3200 KiB
19Hibás válasz0/143ms3280 KiB
20Hibás válasz0/143ms3392 KiB
21Hibás válasz0/143ms3400 KiB
22Hibás válasz0/143ms3472 KiB