Cod sursa(job #2224949)

Utilizator cristina-criCristina cristina-cri Data 25 iulie 2018 16:41:32
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <cstdio>
#include <algorithm>
#define Gmax 10005
#define NRmax 5005

using namespace std;

int nr_obiecte,dp[Gmax], greutate_max;

struct s
{
    int g, val;
} obiecte[NRmax];

void dinamica()
{
    for(int i=1; i<=nr_obiecte; i++)
    {
        //dp[i]=max(dp[i], obiecte[i].val);
        for(int j=greutate_max; j>=obiecte[i].g; j--)
        {
//            if(j-obiecte[i].g < 0)
//                continue;
            dp[j]=max(dp[j], dp[j-obiecte[i].g]+obiecte[i].val);
        }
    }
}

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

    scanf("%d %d", &nr_obiecte, &greutate_max);
    for(int i=1; i<=nr_obiecte; i++)
    {
        scanf("%d %d", &obiecte[i].g, &obiecte[i].val);
    }
    dinamica();
    int nr=greutate_max;
    while(dp[nr] == 0)
        nr--;
    printf("%d", dp[nr]);

    return 0;
}