Cod sursa(job #3313901)

Utilizator cacacacacacacacacaca cacacacaca Data 7 octombrie 2025 11:18:34
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
using namespace std;

/**
 * Problem: Problema rucsacului
 * URL: https://www.infoarena.ro/problema/rucsac
 * TL: 200 ms
 * ML: ${memoryLimit} MB
 */
#define MULTITEST 0
#define int long long
inline void tc() {
    int n, g; cin >> n >> g;
    vector<vector<int>> dp(n + 1, vector<int>(g + 1));
    vector<pair<int, int>> v(n + 1);
    for (int i = 1; i <= n; i ++) {
        cin >> v[i].first >> v[i].second;
    }

    for (int i = 1; i <= n; i ++) {
        for (int j = 1; j <= g; j ++) {
            if (j >= v[i].first) {
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i].first] + v[i].second);
            }
            else {
                dp[i][j] = dp[i - 1][j];
            }
        }
    }

    cout << dp[n][g] << '\n';
}

#define FILEIO 1
#define FILE "rucsac"
signed main() {
#if FILEIO && !defined(LOCAL)
    freopen(FILE ".in", "r", stdin);
    freopen(FILE ".out", "w", stdout);
#endif
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
#if MULTITEST == 1
    int tt;
    cin >> tt;
    while (tt--) {
        tc();
    }
#else
    tc();
#endif
    return 0;
}