Cod sursa(job #2799405)

Utilizator XRobertoHordoan Roberto Sergiu XRoberto Data 13 noiembrie 2021 10:12:37
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <bits/stdc++.h>

//#pragma GCC optimize("Ofast")

using namespace std;

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

int dp[1001][1001], curr_w[1001], p[1001];

int main()
{
    int n, w, i, j, ans;
    fin >> n >> w;
    for (i = 1; i <= n; ++i)
    {
        fin >> curr_w[i] >> p[i];
        for (j = 0; j <= w; ++j)///iterez prin greutatile din dp[i-1]
        {
            if (dp[i - 1][j] > dp[i][j])
                dp[i][j] = dp[i - 1][j];
            if (j + curr_w[i] <= w && dp[i - 1][j] + p[i] > dp[i][j + curr_w[i]])
                dp[i][j + curr_w[i]] = dp[i - 1][j] + p[i];
        }
    }
    fin.close();
    ans = 0;
    for (i = 0; i <= w; ++i)
        if (dp[n][i] > ans)
            ans = dp[n][i];
    fout << ans;
    fout.close();

    return 0;
}