Cod sursa(job #1247735)

Utilizator hanganflorinHangan Florin hanganflorin Data 23 octombrie 2014 15:48:35
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <cstring>
using namespace std;

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

int G, W, e[1002], c[1002], mn, suma;
int d[6000];

int main()
{
    fscanf(is, "%d%d", &G, &W );
    for ( int i = 1; i <= G; ++i )
    {
        fscanf(is, "%d%d", &c[i], &e[i] );
        suma += c[i];
    }
    mn = suma;
    memset(d, 0xff, sizeof(d) );
    d[0] = 0;

    for ( int i = 1; i <= G; ++i )
        for ( int j = suma; j >= 0; --j )
            if ( d[j] != -1 && d[j+c[i]] < d[j] + e[i] )
                d[j+c[i]] = d[j] + e[i];


    for ( int i = W; i <= suma; ++i )
        if ( d[i] != -1 && d[i] < mn )
            mn = d[i];
    fprintf(os, "%d", mn);

    fclose(os);
    fclose(is);
    return 0;
}