Cod sursa(job #3153022)

Utilizator DavidC06Constantinescu David DavidC06 Data 27 septembrie 2023 19:13:34
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;

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

struct obiect{
    int greutate;
    int profit;
};

struct obiect v[5005];

int dp[10005];

void citire(int &N, int &G)
{
    fin>>N;
    fin>>G;
    for(int i=0; i<N;i++)
    {
        fin>>v[i].greutate;
        fin>>v[i].profit;
    }
}

int ProfitMax(int dp[], int G, int N)
{
    for(int i=1; i<v[0].greutate; i++)
    {
        dp[i]=0;
    }
    for(int j=v[0].greutate; j<=G; j++)
    {
        dp[j]=v[0].profit;
    }

    for(int i=1; i<N; i++){
        for(int j=G; j>=v[i].greutate; j--)
        {
            dp[j]=max(dp[j], (dp[j-v[i].greutate]+v[i].profit));
        }
    }

    return dp[G];
}

int main()
{
    int N, G;
    citire(N,G);
    fout<<ProfitMax(dp,G,N);
    return 0;
}