Pagini recente » Cod sursa (job #1294370) | Cod sursa (job #2050894) | Cod sursa (job #1371752) | Cod sursa (job #2843094) | Cod sursa (job #2071866)
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream go("rucsac.out");
int k,mmax=0,gr,s,j,mx=0,i,n,din[20001],c[10001],g[100001],use[1001][1001];
int main()
{f>>n>>gr;
for(i=1;i<=n;i++) f>>g[i]>>c[i];
din[0]=0;
for(i=1;i<=n;i++)
{
for(j=mx;j>=0;j--){
if(din[j+g[i]]<din[j]+c[i]&&j+g[i]<=gr&&(!j||din[j])){
din[j+g[i]]=din[j]+c[i];
for(k=1;k<=n;k++) use[j+g[i]][k]=use[j][k];
use[j+g[i]][i]=1;
if(g[i]+j>mx) mx=g[i]+j;
}
}
}
for(i=0;i<=gr;i++) if(din[i]>mmax)mmax=din[i],mx=i;
go<<mmax<<'\n';
for(i=1;i<=n;i++)if(use[mx][i]==1) go<<i<<" ";
return 0;
}