Cod sursa(job #1194162)

Utilizator bogdanmarin69Bogdan Marin bogdanmarin69 Data 2 iunie 2014 23:39:34
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
using namespace std;
#define MAX 10002
int sol[MAX], n, g;
int main()
{
    int i, lim=0, w, p, j;
    freopen("rucsac.in", "r", stdin);
    freopen("rucsac.out", "w", stdout);
    scanf("%d%d", &n, &g);
    for(i=1; i<=n; i++){
        scanf("%d%d", &w, &p);
        for(j=lim; j>=0; j--)
            if(sol[j]>0 and j+w<=g)
                if(sol[j+w]<sol[j]+p){
                    sol[j+w] = sol[j]+p;
                    if(lim<j+w) lim = j+w;
                }
        if(sol[w]<p) sol[w] = p;
        if(lim<w) lim = w;
    }
    lim = 0;
    for(i=0; i<=g; i++)
        if(sol[i]>lim) lim = sol[i];
    printf("%d ", lim);
    return 0;
}