Cod sursa(job #1189117)

Utilizator andreiagAndrei Galusca andreiag Data 21 mai 2014 14:10:04
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <fstream>

using namespace std;
const int Nmax = 5005;
const int Gmax = 10005;

int dp[Gmax];

int main()
{
    int N, G, w, p;
    ifstream f ("rucsac.in");
    ofstream g ("rucsac.out");

    f >> N >> G;
    dp[0] = 0;
    for (int i = 1; i <= G; i++)
        dp[i] = -1;
    int best = 0;
    for (int i = 0; i < N; i++)
    {
        f >> w >> p;
        for (int x = G-w; x >= 0; x--)
            if (dp[x] != -1 && dp[x] + p  > dp[x+w])
                dp[x+w] = dp[x] + p;
    }
    for (int i = G; i >= 0; i--)
        if (dp[i] > best)
            best = dp[i];
    g << best << '\n';
    return 0;
}