Cod sursa(job #2216218)

Utilizator georgiuadrianadrian georgiuadrian Data 25 iunie 2018 22:39:31
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

#define NMAX 1000
#define Gmax 10000

int g[NMAX + 5],v[NMAX + 5];
int dp[NMAX + 5][Gmax + 5];

int main()
{
    //freopen("date.in", "r", stdin);

    int n,gmax;
    scanf("%d%d", &n, &gmax);
    for (int i = 1; i <= n; i++)
        scanf("%d%d", &g[i], &v[i]);


    for (int i = 1; i <= n; i++)
    {
        for (int w = 0; w <= gmax; w++)
        {
            dp[i][w] = dp[i - 1][w];
            if (g[i] <= w)
                if (dp[i][w] < dp[i - 1][w - g[i]] + v[i])
                    dp[i][w] = dp[i - 1][w - g[i]] + v[i];
        }
    }


    printf("%d", dp[n][gmax]);

    return 0;
}