Cod sursa(job #1957554)

Utilizator cyg_vladioanBirsan Vlad cyg_vladioan Data 7 aprilie 2017 16:54:02
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int d[10005];
int main()
{
    freopen("rucsac.in" , "r" , stdin);
    freopen("rucsac.out" , "w" , stdout);
    int n , G , last , g , v , maxim , i , j;
    scanf("%d%d" , &n , &G);
    d[0] = 0;
    for(i = 1 ; i <= G ; i ++)
       d[i] = -1;
    last = 0;
    for(i = 1 ; i <= n ; i ++)
    {
        scanf("%d%d" , &g , &v);
        for(j = last ; j >= 0 ; j --)
            if(j + g  <= G)
            {
                d[j + g] = max(d[j + g] , d[j] + v);
                if(j + g > last)
                 last = j + g;
            }
    }
    maxim = 0;
    for(i = 1 ; i <= G ; i ++)
      if(d[i] > maxim)
         maxim = d[i];
    printf("%d\n" , maxim);
    return 0;
}