Cod sursa(job #2494880)

Utilizator NoemikulcsarKulcsar Noemi Noemikulcsar Data 18 noiembrie 2019 17:36:22
Problema Problema rucsacului Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

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

int n, g, gg, pp, kkk;
int dp[5][10010];
int main()
{
    in >> n >> g;
    if(g > 5000) kkk = 2500;
    for(int i = 1; i <= n; ++i)
    {
        in >> gg >> pp;
        for(int j = 1; j <= g; ++j)
        {
            dp[1][j] = max(dp[1 - 1][j], dp[1][j - 1]);
            if(j >= gg) dp[1][j] = max(dp[0][j - gg] + pp, dp[1][j]);
        }
        for(int j = kkk; j <= g; ++ j)
            dp[0][j] = dp[1][j];
    }
    out << dp[1][g];
    return 0;
}