Cod sursa(job #2867778)

Utilizator CalinHanguCalinHangu CalinHangu Data 10 martie 2022 15:57:44
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#define NMAX 10005

using namespace std;

ifstream in("rucsac.in");
ofstream out("rucsac.out");

int dp[NMAX], n, i, j, g, gr, ans, last, p;

void rezolvare(){
    in >> n >> g;
    for(i = 1; i <= g; ++i)
        dp[i] = -1;
    last = 0;
    for(i = 1; i <= n; ++i){
        in >> gr >> p;
        for(j = last; j >= 0; --j){
            if(dp[j] != -1){
                if(j + gr > g)
                    continue;
                if(dp[j] + p > dp[j + gr])
                    dp[j + gr] = dp[j] + p;
                if(j + gr > last)
                    last = j + gr;
            }
        }
    }
    ans = 0;
    for(i = g; i >= 1; --i){
        if(dp[i] > ans)
            ans = dp[i];
    }
    out << ans;
}

int main()
{
    rezolvare();
    return 0;
}