Cod sursa(job #1574042)

Utilizator Tomi98Osvath Tamas Tomi98 Data 20 ianuarie 2016 08:45:57
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#define D 1003

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int sol, e[D], c[D], dp[D][5005], G, W;
int main()
{
    f >> G >> W;
    bool ok = 0;
    sol = 1000000000000;
    int l = 0;
    for (int i = 1; i <= G; i++)
        f >> e[i] >> c[i];
    for (int i = 1; i <= G; i++){
        l = 1 - l;
    for (int j = 0; j <= 5005; j++){
        dp[i][j] = dp[i - 1][j];
        if (c[i] <= j)
            dp[i][j] = max(dp[i][j], dp[i - 1][j - c[i]] + e[i]);
        if (dp[i][j] >= W && j < sol)
            sol = j;
    }
    }
    if (sol != 1000000000000) g << sol;
        else g << "-1";

    return 0;
}