Pagini recente » Cod sursa (job #2023223) | Cod sursa (job #2017990) | Diferente pentru rotatie-lexicografic-minima intre reviziile 30 si 31 | Cod sursa (job #371344) | Cod sursa (job #1295576)
#include<stdio.h>
#define NMAX 5001
#define GMAX 10001
using namespace std;
int castig[NMAX][GMAX],G[NMAX],C[NMAX];
int main(){
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int n,g;
scanf("%d %d",&n,&g);
for(int i=1;i<=n;++i)
scanf("%d %d",&G[i],&C[i]);
for(int i=1;i<=n;++i)
for(int j=1;j<=g;++j){
if(G[i]>j)
castig[i][j]=castig[i-1][j];
else{
if(C[i]+castig[i-1][j-G[i]]>castig[i-1][j])
castig[i][j]=C[i]+castig[i-1][j-G[i]];
else
castig[i][j]=castig[i-1][j];
}
}
printf("%d\n",castig[n][g]);
return 0;
}