Cod sursa(job #1092831)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 27 ianuarie 2014 14:46:36
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#define MAXW 5001
#define MAXG 1001

int e[MAXG], c[MAXG], D[MAXW];

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

    int G, w;

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

    for( int i = 0 ; i < G ; ++i )
        fscanf( f, "%d%d", &e[i], &c[i] );

    for( int i = 1; i <= w; ++i)
        D[i] = (1<<30);

    for( int i = 0 ; i < G ; ++i )
        for( int j = w ; j >= 0 ; --j )
            if( j + e[i] <= w && D[ j + e[i] ] > D[j] + c[i] )
                D[j + e[i] ] = D[j] + c[i];

    if( D[w] == (1<<30) )
        D[w] = -1;
    fprintf( g, "%d\n", D[w] );

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