Cod sursa(job #1357899)

Utilizator marinceanionutMarincean Ioan marinceanionut Data 24 februarie 2015 10:34:40
Problema Problema rucsacului Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#define GMAX 10005
#define NMAX 5005

using namespace std;



int dp[NMAX][GMAX], N, G, P[GMAX], g[GMAX];

void citire();
void pd();

int main()
{

    freopen ("rucsac.out", "w", stdout);
    citire();
    pd();
    printf("%d", dp[N][G]);
    return 0;
}

void citire()
{
    freopen ("rucsac.in", "r", stdin);
    int i;
    scanf("%d %d", &N, &G);
    for(i=1;i<=N;++i)
    {
        scanf("%d %d", &g[i], &P[i]);
    }
}

void pd()
{
    int i, j;
    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=0;j<=G;++j)
        {
            dp[i][j]=dp[i-1][j];
            if( j>=g[i] && dp[i-1][j-g[i]] + P[i] > dp[i][j] )
                dp[i][j]=dp[i-1][j-g[i]] + P[i];
        }
    }
}