Cod sursa(job #1357876)

Utilizator marinceanionutMarincean Ioan marinceanionut Data 24 februarie 2015 10:18:45
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define GMAX 10005
#define NMAX 5005

using namespace std;

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

struct obiect
{
    int short w, p;
}objects[GMAX];

short int dp[NMAX][GMAX], N, G;

void citire();
void pd();

int main()
{
    citire();
    pd();
    fout<<dp[N][G]<<'\n';
    return 0;
}

void citire()
{
    int i;
    fin>>N>>G;
    for(i=1;i<=N;++i)
    {
        fin>>objects[i].w>>objects[i].p;
    }
}

void pd()
{
    int i, j, maxim;
    for(i=0;i<=N;++i)
        dp[0][i]=0;
    for(i=0;i<=G;++i)
        dp[i][0]=0;
    for(i=1;i<=N;++i)
    {
        for(j=1;j<=G;++j)
        {
            maxim=0;
            if( j>=objects[i].w && dp[i-1][j-objects[i].w] + objects[i].p > dp[i-1][j] )
                maxim=dp[i-1][j-objects[i].w] + objects[i].p;
            else
                maxim=dp[i-1][j];
            dp[i][j]=maxim;
        }
    }
}