Cod sursa(job #1013544)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 21 octombrie 2013 09:29:06
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
# include <cstdio>
# include <iostream>
using namespace std;
# define inf 3000000
int E[1024], C[1024], Ct[20000];
int i, j, n, Wt, Max, sol;
int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);

    scanf("%d%d", &n, &Wt);
    //initializam costul minim
    for (i = 1; i <= n; ++i)
    {
        scanf("%d%d", &E[i], &C[i]);
        Max = max(Max, E[i]);
    }
    for (i = 1; i <= Wt + Max; ++i)
        Ct[i] = inf;
    // Ct[j] = costul minim necesar pentru a da o energie >=j,
    //folosind primele i generatoare
    for (i = 1; i <= n; ++i)
        for (j = Wt; j >= 0; --j)
            if (Ct[j + E[i]] > Ct[j] + C[i])
                Ct[j + E[i]] = Ct[j] + C[i];

    sol = inf;
    for (i = Wt; i <= Wt + Max; ++i)
        if (Ct[i] < sol) sol = Ct[i];

    if (sol == inf) printf("-1");
               else printf("%d", sol);
    return 0;
}