Cod sursa(job #2585224)

Utilizator PetrescuAlexandru Petrescu Petrescu Data 18 martie 2020 20:09:36
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#define MAXN 5001
#define MAXG 10001

using namespace std;

struct
{
    int w;
    int p;
}rucsac[MAXN];
int dp[MAXG];

int main()
{
    int n, g, i, j, sol = 0;

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

    fin >> n >> g;

    for(i = 1; i <= n; i++)fin >> rucsac[i].w >> rucsac[i].p;

    for(i = 1; i <= n; i++)
        for(j = g - rucsac[i].w; j >= 0; j--)
            if(dp[j + rucsac[i].w] < dp[j] + rucsac[i].p)
            {
                dp[j + rucsac[i].w] = dp[j] + rucsac[i].p;
                if(sol < dp[j + rucsac[i].w])sol = dp[j + rucsac[i].w];
            }

    fout << sol;

    fin.close();
    fout.close();

    return 0;
}