Cod sursa(job #587775)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 5 mai 2011 20:15:42
Problema Economie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

unsigned N, V[1005], VMax, Sort[50010], M;
char S[50010];

void Read ()
{
	ifstream fin ("economie.in");
	unsigned i;
	fin >> N;
	for (i=0; i<N; i++)
	{
		fin >> V[i];
		if (V[i]>VMax)
		{
			VMax=V[i];
		}
	}
	fin.close ();
}

void Type ()
{
	ofstream fout ("economie.out");
	unsigned i;
	fout << M << "\n";
	for (i=0; i<M; i++)
	{
		fout << V[i] << "\n";
	}
	fout.close ();
}

void CountingSort ()
{
	unsigned i, j=0;
	for (i=0; i<N; i++)
	{
		Sort[V[i]]=1;
	}
	for (i=1; i<=VMax; i++)
	{
		if (Sort[i]==1)
		{
			V[j++]=i;
		}
	}
}

int main ()
{
	unsigned i, j, v;
	Read ();
	CountingSort ();
	for (i=0; i<N; i++)
	{
		S[V[i]]=1;
		for (j=1; j<=VMax; j++)
		{
			if ((S[j]==1)&&(j+V[i]<=VMax))
			{
				S[j+V[i]]=1;
			}
		}
		v=1;
		for (j=0; j<N; j++)
		{
			if (S[V[j]]==0)
			{
				v=0;
				break;
			}
		}
		if (v==1)
		{
			break;
		}
	}
	M=i+1;
	Type ();
	return 0;
}