Cod sursa(job #18892)

Utilizator skyelHighScore skyel Data 18 februarie 2007 14:47:38
Problema Ghiozdan Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream.h>
#define input "ghiozdan.in"
#define output "ghiozdan.out"
#define Nmax 20005

int n,a[Nmax],x,gact=0,sact[Nmax],spr[Nmax];
long g;
void btk(int k,long G,int s)
	{
	int i,j;
	if(G<=g)
		{
		if(G>gact)
			{
			gact=G;
			x=k;
			for(j=1;j<=s;j++)
				spr[j]=sact[j];
			}
		else
			if(G==gact&&k<x)
				{
				x=k;
				for(j=1;j<=s;j++)
					spr[j]=sact[j];
				}
		for(i=s;i<=n;i++)
			if(sact[i]==0)
				{
				sact[i]=1;
				btk(k+1,G+a[i],i);
				sact[i]=0;
				}
		}


	}
int main()
	{
	int i;
	ifstream fin(input);
	ofstream fout(output);
	fin>>n>>g;
	for(i=1;i<=n;i++)
		fin>>a[i];
	btk(0,0,1);
	fout<<gact<<" "<<x<<"\n";
	for(i=1;i<=n;i++)
		if(spr[i]==1)
			fout<<a[i]<<"\n";
	return 0;
	}