Cod sursa(job #2760068)

Utilizator CaptnBananaPetcu Tudor CaptnBanana Data 22 iunie 2021 18:59:29
Problema Energii Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;

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

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

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 = sC - c[i]; j >= 0; j--){
                if(dp[j] != -1)
                    dp[j + c[i]] = max(dp[j + c[i]], dp[j] + e[i]);
            }
        }

        for(int j = 1; j <= sC; j++){
            if(dp[j] >= u){
                g << j;
                break;
            }
        }
    }else
        g << -1;

    g.close();
}