Cod sursa(job #1727959)

Utilizator silkMarin Dragos silk Data 11 iulie 2016 22:36:36
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <cstdio>
#define NMax 5005
#define NMax2 10005

int CMax[NMax2];
int W[NMax];
int P[NMax];

int main(){
    freopen("rucsac.in","r",stdin);
    freopen("rucsac.out","w",stdout);

    int i,j,N,G,ans;

    scanf("%d %d",&N,&G);
    for( i = 1; i <= N; ++i ) scanf("%d %d",&W[i],&P[i]);

    for( i = 1; i <= G; ++i ) CMax[i] = -1;

    for( i = 1; i <= N; ++i )
        for( j = G; j >= 0; --j )
        if( W[i] <= j && CMax[ j - W[i] ] != -1 )
            if( P[i] + CMax[ j - W[i] ] > CMax[j] )
            CMax[j] = P[i] + CMax[ j - W[i] ];

    for( ans = 0, i = 0; i <= G; ++i )
    if( ans < CMax[i] ) ans = CMax[i];

    printf("%d\n",ans);



return 0;
}