Cod sursa(job #1767780)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 29 septembrie 2016 19:01:37
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#include <algorithm>
using namespace std;
int d[10005];

int main()
{
    int g, n, i, w, p, j, profmax = 0, count = 0, poz = 0, val = 0;
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);
    scanf("%d%d", &n, &g);
    for(i = 1;i <= g; ++i){
        d[i] = -1;
    }
    count = 0;
    for(j = 1;j <= n; ++j){
        scanf("%d%d", &w, &p);
        for(i = count; i >= 0; --i){
            poz = i + w;
            if(poz <= g && d[i] != -1){
                val = d[i] + p;
                if(d[poz] < val){
                    d[poz] = val;
                    count = max(poz , count);
                }
            }
        }
    }
    for(i = 1;i <= g; ++i){
        profmax = max(profmax , d[i]);
    }
    printf("%d\n",profmax);
    return 0;
}