Cod sursa(job #1247587)

Utilizator hanganflorinHangan Florin hanganflorin Data 22 octombrie 2014 23:54:03
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <cstring>
using namespace std;

FILE * is = fopen("rucsac.in", "r" );
FILE * os = fopen("rucsac.out", "w" );

int n, d[10002], G, g[5002], v[5002], mx;

int main()
{
    fscanf(is, "%d%d", &n, &G );
    for ( int i = 1; i <= n; ++i )
        fscanf(is, "%d%d", &g[i], &v[i] );

    memset(d, 0xff, sizeof(d));
    d[0] = 0;
    for ( int i = 1; i <= n; ++i )
        for ( int j = G - g[i]; j >=0; --j )
            if ( d[j] != -1 &&  d[j+g[i]] < d[j] + v[i] )
            {
                d[j+g[i]] = d[j] + v[i];
                if ( d[j+g[i]] > mx )
                    mx = d[j+g[i]];
            }
    fprintf(os, "%d", mx);
    fclose(is);
    fclose(os);
    return 0;
}