Cod sursa(job #3161236)

Utilizator DnDavid17Craciun Stefan-David DnDavid17 Data 26 octombrie 2023 10:07:32
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
struct object
{
    int weight;
    int profit;
};
const int max_n=5005;
const int max_g=10001;
int dp[max_n][max_g];
int main()
{
    int nr_elem;
    int gmax;
    object objs[max_n];
    fin>>nr_elem>>gmax;
    for(int i=1; i<=nr_elem; i++)
    {
        int greutate;
        int profit1;
        fin>>greutate>>profit1;
        object obiect= {greutate,profit1};
        objs[i]=obiect;
    }
    for(int idx=1; idx<=nr_elem; idx++)
    {
        for(int cap=1; cap<=gmax; cap++)
        {
            object obiect=objs[idx];
            if(obiect.weight>cap)
                dp[idx][cap]=dp[idx-1][cap];
            else
            {
                int profit1=dp[idx-1][cap];
                int profit2=obiect.profit+dp[idx-1][cap-obiect.weight];
                dp[idx][cap]=max(profit1,profit2);
            }

        }
    }
   fout<<dp[nr_elem][gmax];
    return 0;
}