Cod sursa(job #667020)

Utilizator vlad2901Vlad Berindei vlad2901 Data 22 ianuarie 2012 15:38:09
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <algorithm>

#define GMAX 1001
#define WMAX 5001
#define CMAX 1000000000

using namespace std;

int a[2][GMAX], G, W;
int c[GMAX], e[GMAX];

int main()
{
    int i, j, m, l;

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

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


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

    for(i=0;i<=W;++i)
    {
        a[0][i] = CMAX;
        a[1][i] = CMAX;
    }

    a[0][0] = 0;

    for(i=1,l=1;i<=G;++i,l=1-l)
    {
        for(j=0;j<=W;++j)
        {
            a[l][j] = min(a[1-l][j], a[l][j]);
            m = min(j+e[i], W);
            a[l][m] = min(a[l][m], a[1-l][j] + c[i]);
        }
    }

    printf("%d", a[1-l][W] >= CMAX ? -1 : a[1-l][W]);

    return 0;
}