Pagini recente » Cod sursa (job #322235) | Borderou de evaluare (job #1036363) | Cod sursa (job #1943567) | Cod sursa (job #1145558) | Cod sursa (job #1921658)
#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 n,i,gmax,j,gi,cmaxim;
int use[10005],cmax[100005];
struct obiect{
int c,g;
} ob[5005];
int comp(obiect a,obiect b) {
return a.g<b.g;
}
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=cmaxim;j>=0;j--)
if(cmax[j+ob[i].g]<cmax[j]+ob[i].c&&(j+ob[i].g<=gmax||j==0)) {
cmax[j+ob[i].g]=cmax[j]+ob[i].c;
if(cmax[j+ob[i].g]>cmaxim) cmaxim=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;
}
fprintf(g,"%d",cmaxim);
fclose(f); fclose(g);
return 0;
}