Cod sursa(job #773246)

Utilizator monica11Szekely Monica monica11 Data 1 august 2012 11:21:47
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#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]>>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();
}