Cod sursa(job #2304213)

Utilizator AndreiJJIordan Andrei AndreiJJ Data 17 decembrie 2018 18:44:57
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
const int N = 10005;
int v[N], g[N], n, G, dp[2][N];
void Read ()
{
    int  i;
    fin >> n >> G;
    for (i = 1; i <= n; i++)
        fin >> g[i] >> v[i];
}
void DP ()
{
    int i, j, M;
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= G; j++)
        {
            M = dp[0][j];
            if (j >= g[i] && M < dp[0][j - g[i]] + v[i])
                M = dp[0][j - g[i]] + v[i];
            dp[1][j] = M;
        }
        for (j = 1; j <= G; j++)
            dp[0][j] = dp[1][j];
    }
    int smax = -1;
    for (int j = 1; j <= G; j++)
        if (smax < dp[1][j])
            smax = dp[1][j];
    fout << smax;
    fout.close();
}
int main()
{
    Read();
    DP();
    return 0;
}