Pagini recente » Cod sursa (job #1305557) | Cod sursa (job #2132893) | Cod sursa (job #2854328) | Cod sursa (job #2257756) | Cod sursa (job #773244)
Cod sursa(job #773244)
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,gmax,i,gr[10001],c[10001],cmax[1001],uz[5000][5000];
void citire()
{
f>>n>>gmax;
for(i=1;i<=n;i++)
f>>gr[i];
for(i=1;i<=n;i++)
f>>c[i];
}
void rezolva()
{
int s,k,i;
for(s=1;s<=gmax;s++)
cmax[s]=-1;
for(s=1;s<=gmax;s++)
for(i=1;i<=n;i++)
if(gr[i]<=s&&cmax[s-gr[i]]!=-1&&!uz[s-gr[i]][i])
if(cmax[s]<c[i]+cmax[s-gr[i]])
{
cmax[s]=c[i]+cmax[s-gr[i]];
for(k=1;k<=n;k++)
uz[s][k]=uz[s-gr[i]][k];
uz[s][i]=1;
}
}
void afisare()
{
if(cmax[gmax]==-1)
g<<"imposibil";
else
{
g<<cmax[gmax]<<"\n";
//for(int k=1;k<=n;k++)
//if(uz[gmax][k])
// g<<k<<" ";
}
}
int main()
{
citire();
rezolva();
afisare();
}