Pagini recente » Cod sursa (job #42234) | Cod sursa (job #2492895) | Cod sursa (job #2801800) | Cod sursa (job #2525698) | Cod sursa (job #3129384)
#include <ctype.h>
#include <stdlib.h>
#include <stdio.h>
#define max(a,b) ((a) > (b) ? (a) : (b))
void avSp(FILE *f){
char c=getc(f);
while(isspace(c)){
c=getc(f);
}
ungetc(c,f);
}
typedef struct{
int g,p;
}obj;
int solve(int n,int G,obj *v){
int M[n+5][G+5];
for(int i=0;i<=n;++i){
for(int g=0;g<=G;++g){
if(i == 0 || g == 0){
M[i][g] = 0;
}
else if(v[i-1].g <= g){
M[i][g] = max(v[i-1].p + M[i-1][g - v[i-1].g],M[i-1][g]);
}
else{
M[i][g] = M[i-1][g];
}
}
}
return M[n][G];
}
int main(){
stdin = freopen("rucsac.in","r",stdin);
stdout = freopen("rucsac.out","w",stdout);
int n;
int g;
scanf("%d %d",&n,&g);
obj *v = malloc(n * sizeof(obj));
for(int i=0;i<n;++i){
avSp(stdin);
scanf("%d %d",&v[i].g,&v[i].p);
}
printf("%d\n",solve(n,g,v));
return 0;
}