Cod sursa(job #1011866)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 17 octombrie 2013 17:53:52
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>

#define Infinit 1000000000

using namespace std;

int E[1005], C[1005], Best[1005][5005], N, W;

int main ()
{
    freopen ("energii.in", "r", stdin);
    freopen ("energii.out", "w", stdout);

    scanf ("%d%d", &N, &W);
    for (int i=1; i<=N; ++i)
    {
        scanf ("%d%d", &E[i], &C[i]);
    }

    for (int i=0; i<=N; ++i)
    {
        for (int j=1; j<=W; ++j)
        {
            Best[i][j]=Infinit;
        }
    }

    for (int i=1; i<=N; ++i)
    {
        for (int j=1; j<=W; ++j)
        {
            if (E[i]<=j)
            {
                Best[i][j]=Best[i-1][j-E[i]]+C[i];
            }
            else
            {
                Best[i][j]=C[i];
            }
        }
    }

    if (Best[N][W]==Infinit)
    {
        printf ("%d\n", -1);
    }
    else
    {
        printf ("%d\n", Best[N][W]);
    }
    return 0;
}