Cod sursa(job #1174580)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 23 aprilie 2014 14:41:37
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
#define MAXN 5000
#define MAXG 10000

struct obj{
    int w, p;
};

obj v[MAXN];

long long profit[MAXG+1];

int main () {
    FILE *f, *g;
    f = fopen( "rucsac.in", "r" );
    g = fopen( "rucsac.out", "w" );

    int n, G;

    fscanf( f, "%d%d", &n, &G );

    for( int i = 0 ; i < n ; ++i )
        fscanf( f, "%d%d", &v[i].w, &v[i].p );

    for( int i = 1 ; i <= G ; ++i )
        profit[i] = -1;

    for( int i = 0 ; i < n ; ++i )
        for( int j = G ; j >= 0 ; --j )
            if( profit[j] != -1 && j + v[i].w <= G && profit[j + v[i].w] < profit[j] + v[i].p )
                profit[j + v[i].w] = profit[j] + v[i].p;


    fprintf( g, "%lld\n", profit[G] );

    fclose( f );
    fclose( g );
    return 0;
}