Cod sursa(job #1782648)

Utilizator rares00Foica Rares rares00 Data 18 octombrie 2016 14:31:56
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");

int gmax,n;
int v,g;
int val[10005];

int main()
{

//a[i][j] - greutatea optima care se poate obtine
//           cu greutatea j din primele i obiecte

//a[i][j] = MAX(a[i-1][j], v+a[i-1][j-g])

    //citeste gmax si numarul de obiecte
    in>>n>>gmax;
    //initializeaza vectorul de valori
    for(int i=0;i<=gmax;++i)
        val[i]=-1;

    for(int k=1;k<=n;++k)
    {
        in>>g>>v;

        int j=gmax;
        while(j-g>=0)
        {
            if(j==g)
            {
                if(v > val[j])
                    val[j] = v;
            }
            else if(val[j-g]>-1)
            {
                if(v+val[j-g] > val[j])
                    val[j] = v+val[j-g];
            }
            --j;
        }
    }

    //afiseaza maximul
    int mx=val[0];
    for(int i=1;i<=gmax;++i)
        if(mx<val[i])
            mx=val[i];
    out<<mx<<"\n";

    return 0;
}