Cod sursa(job #773280)

Utilizator veleanduAlex Velea veleandu Data 1 august 2012 12:46:38
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
// 12:39

#include <cstdio>
using namespace std;
#define INF 0x3f3f3f3f

    long n,W,i,j,a,b;
    long C_final, C[5005];

int main()
{
    freopen ("energii.in","r",stdin);
    freopen ("energii.out","w",stdout);
    C[0]=0;
    scanf ("%d %d", &n, &W);
    C_final=INF;
    for ( i=1; i<W; i++ )
        C[i]=INF;
    for ( ; n; n-- )
    {
        scanf ("%d %d", &a, &b );
        for ( i=W-1; i>=0; i-- )
        {
            if ( i+a >= W )
            {
                if ( C[i]+b < C_final )
                    C_final=C[i]+b;
            }
            else
                if ( C[i+a] > C[i]+b )
                    C[i+a]=C[i]+b;
        }
    }
    if ( C_final == INF )
        printf ("-1\n");
    else
        printf ("%d\n", C_final);

}