Pagini recente » Cod sursa (job #1015524) | Cod sursa (job #3196631) | Cod sursa (job #1005863) | Cod sursa (job #2907065) | Cod sursa (job #1204539)
#include <cstdio>
#include <algorithm>
using namespace std;
FILE *f=fopen("rucsac.in","r");
FILE *g=fopen("rucsac.out","w");
int n,greu,gtot;
int v[10001];
int main()
{int i,j,x,y;
fscanf(f,"%d %d",&n,&greu);
for (i=1;i<=10000;i++) v[i]=-1;
for (i=1;i<=n;i++)
{fscanf(f,"%d %d",&x,&y);
for (j=min(gtot,10000-x);j>=0;j--) if (v[j]!=-1&&v[j+x]<v[j]+y) v[j+x]=v[j]+y;
gtot+=x;
}
int maxim=0;
for (i=greu;i>=0;i--) if (v[i]>maxim) maxim=v[i];
fprintf(g,"%d\n",maxim);
return 0;
}