Cod sursa(job #2279861)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 10 noiembrie 2018 09:55:53
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <cstdio>
#define N 5005

using namespace std;

int gmax, g[N], v[N], n, d[2*N];

void citire()
{
    for(int i=1;i<=n;i++)
        scanf("%d %d\n", &g[i], &v[i]);
}

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

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

    scanf("%d %d\n", &n, &gmax);
    citire();
    printf("%d", dinamica());
    return 0;
}