Pagini recente » Cod sursa (job #469940) | Cod sursa (job #2230147) | Cod sursa (job #1156725) | Cod sursa (job #2476168) | Cod sursa (job #1921695)
#include<stdio.h>
#include<algorithm>
using namespace std;
#define in "rucsac.in"
#define out "rucsac.out"
FILE*f=fopen(in,"r");
FILE*g=fopen(out,"w");
int maxc,n,i,gmax,j,gi,cmaxim;
int cmax[10005];
struct obiect{
int c,g;
} ob[5005];
int main() {
fscanf(f,"%d%d",&n,&gmax);
for(i=1;i<=n;i++) fscanf(f,"%d%d",&ob[i].g,&ob[i].c);
for(i=1;i<=n;i++)
for(j=maxc;j>=0;j--)
if(cmax[j+ob[i].g]<cmax[j]+ob[i].c&&j+ob[i].g<=gmax&&(cmax[j]!=0||j==0)) {
cmax[j+ob[i].g]=cmax[j]+ob[i].c;
if(cmax[j+ob[i].g]>maxc) maxc=cmax[j+ob[i].g];
//for(k=1;k<=n;k++) use[j+ob[i].g][k]=use[j][k];
//use[j+ob[i].g][i]=1;
}
for(i=0;i<=gmax;i++)
if(cmax[i]>cmaxim) cmaxim=cmax[i];
fprintf(g,"%d",cmaxim);
fclose(f); fclose(g);
return 0;
}