Pagini recente » Cod sursa (job #2110121) | Cod sursa (job #1148203) | Cod sursa (job #1827494) | Cod sursa (job #2554888) | Cod sursa (job #498406)
Cod sursa(job #498406)
#include<fstream>
using namespace std;
#define NMax 1001
#define MaxG 5001
int n,GMax,c[NMax],Uz[NMax][NMax],g[NMax],CMax[NMax];
void citire();
void rezolvare();
void afisare();
int main()
{
citire();
rezolvare();
afisare();
return 0;
}
void citire()
{
ifstream f("energii.in");
int i,j;
f>>n>>GMax;
for(i=1;i<=n;i++) f>>g[i];
for(i=1;i<=n;i++) f>>c[i];
f.close();
}
void rezolvare()
{
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(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;
}
}
void afisare()
{
ofstream g("energii.out");
if(CMax[GMax]==-1)
g<<"-1\n";
else
{
g<<CMax[GMax]<<"\n";
//for(int k=1; k<=n; k++)
// if(Uz[GMax][k])
// g<<k<<" ";
// g<<"\n";
}
g.close();
}