Cod sursa(job #1469545)

Utilizator mirupetPetcan Miruna mirupet Data 8 august 2015 16:58:04
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
#define MAX 1000000000
using namespace std;

int N, W, i, j;
int Sol[5010], e[1001], c[1001];

int Minim(int a, int b)
{
    return a < b ? a : b;
}

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

        scanf("%d%d", &N, &W);

        for (i = 1; i <= N; i++)
            scanf("%d %d", &e[i], &c[i]);

        for (i = 1; i <= W; i++)
            Sol[i] = MAX;

        for (i = 1; i <= N; ++i)
            for (j = W; j >= 0; --j)
            if (Sol[j] != MAX)
            {
                if (j + e[i] >= W)
                    Sol[W] = Minim(Sol[W], Sol[j] + c[i]);

                else
                    Sol[j + e[i]] = Minim(Sol[j + e[i]], Sol[j] + c[i]);
            }

        /*for (i = 1; i <= W; i++)
            printf("%d ", Sol[i]);*/

        if (Sol[W] == MAX)
            printf("-1");
        else
            printf("%d", Sol[W]);
    }