Cod sursa(job #1428446)

Utilizator tudorcomanTudor Coman tudorcoman Data 4 mai 2015 16:21:24
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb

#include <stdio.h>

const int MAX_G = 10000;
const char *fi = "rucsac.in";
const char *fo = "rucsac.out";

int N,G, sol[2][MAX_G + 1];

inline int MAX (int a, int b) { return (a > b) ? a : b; }

int main(int argc, const char * argv[]) {
    
    freopen (fi, "r", stdin);
    freopen (fo, "w", stdout);
    int w,p,l = 0;
    scanf("%d%d",&N,&G);
    
    for (int i=1; i <= N; ++i, l = 1 - l) {
        scanf("%d%d",&w,&p);
        
        for (int j = 1; j <= G; ++ j) {
            if (j < w)
                sol[1 - l][j] = sol[l][j];
            else
                sol[1 - l][j] = MAX (sol[l][j], sol[l][j - w] + p);
        }
    }
    
    printf("%d\n",sol[l][G]);
    return 0;
}