Cod sursa(job #735202)
Utilizator | Data | 15 aprilie 2012 21:00:00 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 10001
int bst[MAX],sol[MAX],n,m;
int main(){
int w,p;
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d %d",&n,&m);
for(int k=1;k<=n;k++){
scanf("%d %d",&w,&p);
for(int i=1;i<w;i++)sol[i]=bst[i];
for(int i=w;i<=m;i++)sol[i]=max(bst[i],bst[i-w]+p);
for(int i=1;i<=m;i++)bst[i]=sol[i];
}
w=0;
for(int i=1;i<=m;i++)w=max(w,bst[i]);
printf("%d\n",w);
}