Cod sursa(job #2731268)

Utilizator divadddDavid Curca divaddd Data 27 martie 2021 17:07:31
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#define MAX 10002
using namespace std;
int n,G,g,p,dp[MAX];

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

int main()
{
    /// dp[i] = profitul obtinut daca avem o submultime de suma
    ///         a greutatilor egala cu i
    fin >> n >> G;
    for(int i = 1; i <= G; i++)
    {
        dp[i] = -1;
    }
    dp[0] = 0;
    for(int i = 1; i <= n; i++)
    {
        fin >> g >> p;
        for(int j = G-g; j >= 0; j--)
        {
            if(dp[j]!=-1)
            {
                if(dp[j+g] < dp[j]+p){
                    dp[j+g] = dp[j]+p;
                }
            }
        }
    }

    int ans = 0;
    for(int i = 1; i <= G; i++)
    {
        ans = max(dp[i], ans);
    }
    fout << ans << "\n";
    return 0;
}