Cod sursa(job #204816)

Utilizator IrnukIrina Grosu Irnuk Data 26 august 2008 23:32:28
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb


#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;
}