Cod sursa(job #2216221)

Utilizator georgiuadrianadrian georgiuadrian Data 25 iunie 2018 22:45:26
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <algorithm>

using namespace std;

#define NMAX 5000
#define Gmax 10000

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

int main()
{
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);

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

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

    printf("%d", maxim);

    fclose(stdin);
    fclose(stdout);
    return 0;
}