Cod sursa(job #623997)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 21 octombrie 2011 13:24:05
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <cstdio>

const int N = 5010;
const int G_MAX = 10005;

int val[N],g[N],n;
int g_max;
int valoare[G_MAX];//Valoarea maxima pt o anumita greutate.

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

void rucsac()
{
    for (int o = 1; o <= n; ++o)
        if (val [o] > 0)//nu intereseaza obiectele de valoare 0
        for (int i = g_max - g[o]; i >= 0; --i)
            if (valoare[i + g[o]] < valoare[i] + val[o])
                valoare[i + g[o]] = valoare[i] + val[o];
}

int valoare_maxima()
{
    int val_max = 0;
    for (int i = 0; i <= g_max; ++i)
        if (valoare[i] > val_max)
            val_max = valoare[i];
    return val_max;
}

int main()
{
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    citire();
    rucsac();
    printf("%d",valoare_maxima());
    return 0;
}