Cod sursa(job #613402)
Utilizator | Horia Cretescu ELHoria | Data | 24 septembrie 2011 10:28:29 |
---|---|---|---|
Problema | Problema rucsacului | Scor | 65 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
int n , D[2][10002], P[5002] , W[5002] , G;
static inline int max(int a,int b)
{
return a > b ? a : b;
}
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d %d",&n,&G);
for(int i=1;i<=n;++i)
scanf("%d %d",&W[i],&P[i]);
int l = 0;
for(int i=1;i<=n;++i,l = 1-l)
for(int j=0;j<=G;++j)
{
D[1-l][j] = D[l][j];
if(W[i]<=j)
D[1-l][j] = max(D[1-l][j],D[l][j-W[i]] + P[i]);
}
printf("%d\n",D[l][G]);
return 0;
}