Cod sursa(job #808274)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 6 noiembrie 2012 16:26:54
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <stdlib.h>
#include <algorithm>
#include <bitset>
using namespace std;

ifstream fi ("economie.in");
ofstream fo ("economie.out");

const int valmax = 50005, monmax = 1005;
int N, V[monmax], R[monmax];
bitset <valmax> viz;

void cit ()
{
	fi >> N;
	for (int i = 1; i <= N; i++)
	{
		fi >> V[i];
	}
	sort (V + 1, V + N + 1);
}

void rez ()
{
	int i, j, val;
	viz[0] = 1;
	for (i = 1; i <= N; i++)
	{
		val = V[i];
		if (viz[val] == 0)
		{
			R[++R[0]] = val;
			for (j = 0; j <= valmax - val; j++)
			{
				if (viz[j])
					viz[j + val] = 1;
			}
		}
	}	
}

void afi ()
{
	for (int i = 0; i <= R[0]; i++)
	{
		fo << R[i] << '\n';
	}
}

int main ()
{
	cit ();
	rez ();
	afi ();
	return 0;
}