Cod sursa(job #2529163)

Utilizator popoviciAna16Popovici Ana popoviciAna16 Data 22 ianuarie 2020 23:52:35
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>
using namespace std;

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

int dp[2][10001];
//dp[i][j] = castigul maxim daca iau o submult. din primele i obiecte, cu greutatea maxima j
int g[5001], c[5001];

int main()
{
    int N, G, i, j, l;
    fin >> N >> G;
    for (i = 1; i<=N; i++)
        fin >> g[i] >> c[i];
    for (i = 1, l = 0; i<=N; i++, l = 1-l)
        for (j = 1; j<=G; j++)
        {
            dp[l][j] = dp[1-l][j];
            if (g[i] <= j)
                dp[l][j] = max(dp[l][j], dp[1-l][j-g[i]] + c[i]);
        }
    fout << dp[1-l][G];
    return 0;
}