Cod sursa(job #2502893)

Utilizator ardutgamerAndrei Bancila ardutgamer Data 1 decembrie 2019 19:38:52
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

const int VMAX = 50005;
bool dp[VMAX];
vector<int>sol;
vector<int>v;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	ifstream cin("economie.in");
	ofstream cout("economie.out");
	int n, x;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> x;
		v.push_back(x);
	}
	sort(v.begin(), v.end());
	dp[0] = 1;
	for (int i = 0; i < (int)v.size(); i++)
	{
		if(!dp[v[i]])
		{ 
			sol.push_back(v[i]);
			for (int j = 0 ; j <= VMAX-5-v[i]; j++)
				if (dp[j])
					dp[j + v[i]] = 1;
		}
	}
	cout << sol.size() << "\n";
	for (int i = 0; i < (int)sol.size(); i++)
		cout << sol[i] << "\n";
	return 0;
}