Pagini recente » Cod sursa (job #3170120) | Cod sursa (job #266383) | Cod sursa (job #92627) | Cod sursa (job #3148852) | Cod sursa (job #1690493)
#include <string.h>
#include <stdio.h>
using namespace std;
int d[10005], w[10005], p[10005];
int main()
{
int n,gmax,i,j,last,pmax;
FILE *fin, *fout;
fin=fopen("rucsac.in", "r");
fout=fopen("rucsac.out", "w");
fscanf(fin, "%d%d", &n, &gmax);
memset(d,-1,sizeof(d));
d[0]=0;
last=0;
for(i=1; i<=n; i++)
fscanf(fin, "%d%d", &w[i], &p[i]);
for(i=1; i<=n; i++)
for(j=last; j>=0; j--)
if(d[j]!=-1)
if(j+w[i]<=gmax)
if(d[j+w[i]]<d[j]+p[i])
{
d[j+w[i]]=d[j]+p[i];
if(j+w[i]>last)
last=j+w[i];
}
pmax=d[gmax];
for(i=gmax-1; i>=1; i--)
if(d[i]>pmax)
pmax=d[i];
fprintf(fout, "%d", pmax);
return 0;
}