Cod sursa(job #2665656)

Utilizator mihaidumitrescuMIHAI DUMITRESCU mihaidumitrescu Data 31 octombrie 2020 10:43:17
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

ifstream cin("rucsac.in");
ofstream cout("rucsac.out");

class BagItem {
public:
    int val, cost;
};

BagItem bag[5005];
int n, g, dp[2][100005], line;

inline int next_line() {
    return 1 - line;
}

int main() {
    cin >> n >> g;

    for(int i = 1; i <= n; ++i) {
        cin >> bag[i].cost >> bag[i].val;
    }

    for(int i = 1; i <= n; ++i, line = next_line()) {
        for(int curr_cost = 0; curr_cost <= g; ++curr_cost) {
            dp[next_line()][curr_cost] = dp[line][curr_cost];

            if(bag[i].cost <= curr_cost) {
                dp[next_line()][curr_cost] = max(dp[next_line()][curr_cost], dp[line][curr_cost - bag[i].cost] + bag[i].val);
            }
        }
    }

    cout << max(dp[0][g], dp[1][g]) << '\n';
    return 0;
}