Pagini recente » Cod sursa (job #325383) | Cod sursa (job #1767227) | Cod sursa (job #140097) | Cod sursa (job #400288) | Cod sursa (job #1221586)
#include<cstdio>
using namespace std;
int i, v[10002], vmax, g[10002], a[10002], n, gmax,pfmax, j;
bool ok[10002];
int max(int a, int b){if (a>=b) return a; else return b;}
int min(int a, int b){if (a<=b) return a; else return b;}
int main(){
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d", &n, &gmax);
for (i=1;i<=n;i++) scanf("%d%d", &g[i], &v[i]);
vmax=0; ok[0]=true; a[0]=0; pfmax=0;
for (i=1;i<=n;i++) for (j=vmax;j>=0;j--)
if ((ok[j]==true)&&(j+g[i]<=gmax)) {
ok[j+g[i]]=true;
if (vmax<j+g[i]) vmax=j+g[i];
a[j+g[i]]=max(a[j]+v[i], a[j+g[i]]);
if (a[j+g[i]]>pfmax) pfmax=a[j+g[i]];
}
printf("%d\n", pfmax);
return 0;
}