Cod sursa(job #2710490)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 22 februarie 2021 16:59:46
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define INF 1e9
#define MAX 1000
int d[ 5000 ];
int g, w, n;

int min( int a, int b ){
    if( a <= b )
        return a;
    return b;
}

int main()
{
    FILE *fin = fopen( "energii.in", "r" );
    fscanf( fin, "%d%d", &n, &w );
    d[ 0 ] = 0;
    for( int i = 1; i <= w; i++ )
        d[ i ] = INF;
    for( int i = 1; i <= n; i++ ){
        int e, c;
        fscanf( fin, "%d %d", &e, &c );
        for( int i = w; i >= e; i-- )
            if( d[ i - e ] != INF )
                d[ i ] = min( d[ i ], d[ i - e ] + c );
        for( int i = e - 1; i >= 0; i-- )
            d[ i ] = min( d[ i ], c );
    }
    fclose( fin );
    FILE *fout = fopen( "energii.out", "w" );
    fprintf( fout, "%d\n", d[ w ] == INF ? -1 : d[ w ] );
    fclose( fout );
    return 0;
}