Cod sursa(job #829389)

Utilizator CosminRusuCosmin Rusu CosminRusu Data 5 decembrie 2012 11:51:41
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#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;   
}