Pagini recente » Cod sursa (job #2968696) | Cod sursa (job #10405) | Cod sursa (job #185366) | Cod sursa (job #1882798) | Cod sursa (job #1650718)
#include <cstdio>
#include <cstring>
#define MAX_G 10000
using namespace std;
int d[MAX_G+5];
inline int mymax(int x, int y){
return (x>y ? x : y);
}
int main(){
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n, p, g, G, i, j, dr, ans;
scanf("%d%d", &n, &G);
memset(d, 0xff, sizeof(d));
d[0]=0;
dr=0;
for (i=1; i<=n; i++){
scanf("%d%d", &g, &p);
for (j=dr; j>=0; j--){
if (j+g<=G)
if (d[j]!=-1){
d[j+g]=mymax(d[j+g], d[j]+p);
if (j+g>dr)
dr=j+g;
}
}
}
ans=0;
for (i=1; i<=G; ++i)
ans=mymax(d[i], ans);
printf("%d\n", ans);
return 0;
}