Cod sursa(job #630130)

Utilizator SchumiDumitru Andrei Georgian Schumi Data 4 noiembrie 2011 19:16:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

using namespace std;

int n, e, energ[15005], x[1005], y[1005];
const int inf = 999999999;

int minim(int a, int b)
{
    return (a < b) ? a : b;
}
int main()
{
    int i, j;
    freopen ("energii.in", "r", stdin);
    freopen ("energii.out", "w", stdout);
    scanf("%d %d", &n, &e);
    for(i = 1; i <= n; ++i) {
        scanf("%d %d", &x[i], &y[i]);
    }
    for(i = 1; i <= 15000; ++i) {
        energ[i] = inf;
    }
    for(i = 1; i <= n; ++i) {
        for(j = e; j >= 0; --j) {
            if(energ[j] != inf)
                energ[j + x[i]] = minim(energ[j + x[i]], energ[j] + y[i]);
        }
    }
    int min = 99999999;
    for(i = e; i <= 15000; ++i)
        if(energ[i] < min)
            min = energ[i];
    if(min == 99999999)
        min = -1;
    printf("%d", min);
    return 0;
}