Pagini recente » Cod sursa (job #820524) | Cod sursa (job #2038483) | Cod sursa (job #2864837) | Cod sursa (job #1388205) | Cod sursa (job #1654954)
#include<stdio.h>
struct bine {int g ; int p ;};
bine v[5001];
int suma[10001];
int main(){
int max,i,j,n,G,maxim;
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&G);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].g,&v[i].p);
suma[v[1].g]=v[1].p;
max=v[1].g;
for(i=2;i<=n;i++){
for(j=max;j>=1;j--){
if(suma[j]!=0&&j+v[i].g<=G){
if(suma[j+v[i].g]<v[i].p+suma[j])
suma[j+v[i].g]=v[i].p+suma[j];
if(suma[j+v[i].g]==0)
suma[j+v[i].g]=v[i].p+suma[j];
if(j+v[i].g>max)
max=j+v[i].g;
}
}
if(suma[v[i].g]<v[i].p||suma[v[i].g]==0){
suma[v[i].g]=v[i].p;
if(v[i].g>max)
max=v[i].g;
}
}
maxim=-1;
for(i=max;i>=1;i--)
if(suma[i]>maxim)
maxim=suma[i];
printf("%d\n",maxim);
return 0;
}