Cod sursa(job #2105438)

Utilizator cristicretancristi cretan cristicretan Data 13 ianuarie 2018 11:52:51
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda arhivacre Marime 0.63 kb
/// knapsack problem
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
#define NMax 5001
#define GMax 10001
///#define f cin
///#define g cout
using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int n, G, w[NMax], p[NMax], dp[NMax][GMax];

int main()
{
    f >> n >> G;
    for(int i = 1; i <= n; ++i)
        f >> w[i] >> p[i];

    for(int i = 1; i <= n; ++i)
        for(int j = 0; j <= G; ++j)
    {
        dp[i][j] = dp[i - 1][j];
        if(j - w[i] >= 0) dp[i][j] = max(dp[i][j], dp[i - 1][j - w[i]] + p[i]);
    }

    g << dp[n][G] << '\n';
    return 0;
}