Cod sursa(job #2760074)

Utilizator CaptnBananaPetcu Tudor CaptnBanana Data 22 iunie 2021 19:14:15
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

const int N = 1000, S = 10 * N * N + 1;
int n, u, e[N], c[N], sC, dp[S], sE, ans = S;

int main(){
    f >> n >> u;
    for(int i = 0; i < n; i++){
        f >> e[i] >> c[i];
        sC += c[i];
        sE += e[i];
    }

    f.close();
    if(sE >= u){
        for(int j = 1; j <= sC; j++)
            dp[j] = -1;

        for(int i = 0; i < n; i++){
            for(int j = u - e[i]; j >= 0; j--){
                if(dp[j] != -1)
                    dp[j + e[i]] = max(dp[j + e[i]], dp[j] + c[i]);
            }
        }

        for(int j = u; j <= min(u + 10 * N, sE); j++){
            if(dp[j] != -1)
                ans = min(ans, dp[j]);
        }

        g << ans;
    }else
        g << -1;

    g.close();
}