Cod sursa(job #849157)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 6 ianuarie 2013 16:38:44
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>

using namespace std;

int max(int a,int b)
{
	if(a>b)return a;
	return b;
}

short int m[1000010];
short int g[1010];
int main()
{
	ifstream fin("jocul.in");
	ofstream fout("jocul.out");
	int n,i,j,suma=0,jumatate;
	fin>>n;
	
	for(i=0;i<n;i++)
	{
		fin>>g[i];
		suma+=g[i];
	}
	jumatate=suma/2;
	for(i=g[0];i<=jumatate;i++)
		m[i]=g[0];
	
	
	for(i=0;i<n;i++)
		for(j=jumatate;j>=0;j--)
		{
			if(j-g[i]>=0)
			{
				m[j]=max(m[j],m[j-g[i]]+g[i]);	
			}
		}
	
	fout<<m[jumatate]<<' '<<suma-m[jumatate]<<endl;
	fin.close();
	fout.close();
	return 0;
}