Pagini recente » Cod sursa (job #2090601) | Cod sursa (job #2492131) | Cod sursa (job #2691177) | Cod sursa (job #47454) | Cod sursa (job #829389)
Cod sursa(job #829389)
#include<fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
long n,Cmax[100],S,k, Gmax,i,j,g[100], c[100],uz[100][100];
int main()
{
cin>>n>>Gmax;
for(i=1;i<=n;i++)
cin>>g[i];
for(i=1;i<=n;i++)
cin>>c[i];
for(S=1;S<=Gmax;S++)
Cmax[S]=-1;
for(S=1;S<=Gmax;S++)
for(i=1;i<=n;i++)
if(g[i]<=S && Cmax[S-g[i]]!=-1 && !uz[S-g[i]][i])
if(Cmax[S]<c[i]+Cmax[S-g[i]])
{ Cmax[S]=c[i]+Cmax[S-g[i]];
for(k=1;k<=n;k++)
uz[S][k]=uz[S-g[i]][k];
uz[S][i]=1;}
if(Cmax[Gmax]==-1)
cout<<"imposibil";
else {cout<<Cmax[Gmax]<<endl;
for(k=1;k<=n;k++)
if(uz[Gmax][k])
cout<<k<<" ";
}
return 0;
}