Cod sursa(job #1025617)

Utilizator frostwareDumitrascu Constantin frostware Data 10 noiembrie 2013 12:54:56
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>

#define inFile  "rucsac.in"
#define outFile "rucsac.out"

#define max(a,b)    (a>b ? a:b)

int Sol[2][10001],
    N, G, W, P, l, pos;

int main()
{
    freopen( inFile, "r", stdin );
    scanf("%d %d", &N, &G);

    for( int i = 1; i <= N; i++, l = 1 - l )
    {
        scanf("%d %d", &W, &P);
        for( pos = 0; pos <= G; pos++ )
        {
            Sol[1-l][pos] = Sol[l][pos];
            if( W <= pos )
                Sol[1-l][pos] = max( Sol[1-l][pos], Sol[l][pos - W] + P );
        }
    }

    freopen( outFile, "w", stdout );
    printf("%d\n", Sol[l][G]);
    return 0;
}