Cod sursa(job #1075750)

Utilizator RarRaresNedelcu Rares RarRares Data 9 ianuarie 2014 15:32:32
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <cstdio>
#define nmax 10005

using namespace std;
int n, G;
int costo[nmax];//cost optim
int p[nmax], w[nmax];


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

void rucsac()
{
    /**primul rand*/
    for(int i = w[1]; i <= G; ++i)
        costo[i] = p[1];

    /**pentru fiecare rand(obiect adaugat)*/
    for(int i = 2; i <= n; i++)
    {
        for(int j = G; j >= w[i]; --j)
            costo[j] = max(costo[j], p[i] + costo[j-w[i]]);
    }

}



void afisare()
{
    int rezultat = 0;
    for(int i = 1; i <= G; i++)
        rezultat = max(rezultat, costo[i]);

    cout << rezultat;
}

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

    rucsac();

    afisare();
    return 0;
}