Cod sursa(job #2323357)

Utilizator CristianaMelinceanuMelinceanu Cristiana CristianaMelinceanu Data 19 ianuarie 2019 10:13:21
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>

using namespace std;
struct obiecte
{
        int w;
        int p;
};


int main()
{
    ifstream f("rucsac.in");
    ofstream g("rucsac.out");
    int n,gmax;
    f>>n>>gmax;
    obiecte *o;
    o=new obiecte[n+1];
    for(int i=1;i<=n;i++)
        f>>o[i].w>>o[i].p;
    int **dp;
    dp=new int*[n+1];
    for(int i=0;i<=n;i++)
        dp[i]=new int[gmax+1];
    for(int i=0;i<=n;i++)
        for(int j=0;j<=gmax;j++)
            dp[i][j]=0;
    int x,y;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=gmax;j++)
        {
            if(j==1)
                dp[i][j]=0;
            else
            {
                x=dp[i-1][j];
                if(j-o[i].w>=0)
                    y=dp[i-1][j-o[i].w]+o[i].p;
                else
                    y=0;
                dp[i][j]=max(x,y);
            }
        }
    g<<dp[n][gmax];

    return 0;
}