Cod sursa(job #937167)

Utilizator mvcl3Marian Iacob mvcl3 Data 9 aprilie 2013 22:45:02
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;

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

const int N_Max = 5003, M_Max = 10003;

int N, G, P[N_Max], W[N_Max], Dp[N_Max][M_Max];

inline void read_Data() {
    f >> N >> G;

    for(int i = 1; i <= N; ++i)
        f >> W[i] >> P[i];
}

inline void solve() {
    for(int i = 1; i <= N; ++i)
        for(int cw = 1; cw <= G; ++cw) {
            Dp[i][cw] = Dp[i - 1][cw];

            if(W[i] <= cw)
                Dp[i][cw] = max(Dp[i][cw], Dp[i - 1][cw - W[i]] + P[i]);
        }
}

int main()  {
    read_Data();
    solve();

    g << Dp[N][G] << '\n';

    g.close();
    return 0;
}