Cod sursa(job #819509)

Utilizator alex-rusuAlex Rusu alex-rusu Data 19 noiembrie 2012 10:39:10
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>

using namespace std;

int n,gmax,g[5004],c[5004],cmax[10000],uz[1000][1000];
int i,G;
int main()
{
	ifstream f("rucsac.in");
	ofstream fout("rucsac.out");
	
	f>>n>>gmax;
	
	for (i=0;i<n;i++)
		f>>g[i];
	for (i=0;i<n;i++)
		f>>c[i];
	int max=0,imax;
	for (G=1;G<=gmax;G++)
	{
		max=cmax[G-1];
		for (i=0;i<n;i++)
		{
			if (g[i]<=G && c[i]+cmax[G-g[i]]>max && uz[G-g[i]][i]==0)
			{
				max=c[i]+cmax[G-g[i]];
				imax=i;
			}
		}
		cmax[G]=max;
		if (max>cmax[G-1])
			uz[G][imax]=1;
	}
	
	fout<<cmax[gmax]<<'\n';
	f.close();
	fout.close();
	return 0;
}