Pagini recente » Cod sursa (job #2646699) | Cod sursa (job #2911082) | Cod sursa (job #240327) | Cod sursa (job #577756) | Cod sursa (job #2118667)
#include <fstream>
using namespace std;
int g[5001];
//bool sel[5001][10001];
/*void afiseaza(ofstream &f, int k, int q){
if (k==0)
return;
if (sel[k][q]){
afiseaza(f, k-1, q-g[k]);
f << k << ' ';
}
else
afiseaza(f, k-1, q);
}*/
int main(){
int n, gmax, c[5001], cmax[5001];
ifstream fin ("rucsac.in");
fin >> n >> gmax;
for (int i=1; i<=n; i++)
fin >> g[i];
for (int i=1; i<=n; i++)
fin >> c[i];
fin.close();
for (int j=0; j<=gmax; j++)
cmax[j]=0;
for (int i=1; i<=n; i++){
for (int r=gmax; r>0; r--)
if (cmax[r]!=0){
//sel[i][r]=false;
if (r+g[i]<=gmax && cmax[r+g[i]]<cmax[r]+c[i]){
cmax[r+g[i]]=cmax[r]+c[i];
//sel[i][r+g[i]]=true;
}
}
if (cmax[g[i]]<c[i]){
cmax[g[i]]=c[i];
//sel[i][g[i]]=true;
}
}
ofstream fout ("rucsac.out");
fout << cmax[gmax] << '\n';
//afiseaza(fout, n, gmax);
fout.close();
return 0;
}