Pagini recente » Cod sursa (job #622115) | Cod sursa (job #2235928) | Cod sursa (job #1873489) | Cod sursa (job #1513887) | Cod sursa (job #204816)
Cod sursa(job #204816)
#include<fstream.h>
#define NMax 10001
#define MaxG 30001
int n,GMax,c[NMax],g[NMax],CMax[MaxG],Uz[MaxG][NMax];
ifstream fin("energii.in");
ofstream fout("energii.out");
int main()
{
int i,S,k;
fin>>n>>GMax;
for(i=1;i<=n;i++)
fin>>g[i];
for(i=1;i<=n;i++)
fin>>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)
fout<<"-1\n";
else
{
fout<<CMax[GMax]<<'\n';
/* for(k=1;k<=n;k++)
if(Uz[GMax][k])
fout<<k<<" ";
*/
}
fout.close();
return 0;
}