Cod sursa(job #2242984)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 19 septembrie 2018 19:45:41
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");

const int NMAX = 10005;

int dp[NMAX], e[NMAX], c[NMAX];

int main() {
    int g, w;
    in >> g >> w;
    for(int i = 1; i <= g; i ++)
        in >> e[i] >> c[i];

    for(int i = 1; i <= w; i ++)
        dp[i] = INT_MAX;
    dp[0] = 0;

    int sol = INT_MAX;
    for(int i = 1; i <= g; i ++)
        for(int j = w; j >= 0; j --) {
            if(dp[j] != INT_MAX) {
                if(e[i] + j >= w)
                    sol =  min(sol, dp[j] + c[i]);
                if(e[i] + j <= w)
                    dp[j + e[i]] = min(dp[j + e[i]], dp[j] + c[i]);
            }
        }
    if(sol == INT_MAX)
        sol = -1;
    out << sol;
    return 0;
}