Cod sursa(job #719555)

Utilizator paul_gabryelPaul Buda paul_gabryel Data 21 martie 2012 21:11:08
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb

#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

#define pb push_back

int v[1024],n;
bitset<50001> uz;
vector<int> sol;

void read ()
{
	ifstream in ("economie.in");
	in>>n;
	for(int i=0;i<n;++i)
		in>>v[i];
}

void solve ()
{
	for(int i=0;i<=v[n-1];i+=v[0])
		uz[i]=1;
	sol.pb(v[0]);
	for(int i=1;i<n;++i)
		if(!uz[v[i]])
		{
			sol.pb(v[i]);
			for(int j=0;j+v[i]<=v[n-1];++j)
				if(uz[j])
					uz[j+v[i]]=1;
		}
}

void out ()
{
	freopen ("economie.out","w",stdout);
	printf("%d\n",sol.size());
	for(vector<int>::iterator i=sol.begin();i<sol.end();++i)
		printf("%d\n",*i);
}

int main ()
{
	read ();
	solve ();
	out ();
	return 0;
}