Pagini recente » Cod sursa (job #891401) | Cod sursa (job #2070900) | Cod sursa (job #475140) | Cod sursa (job #2211456) | Cod sursa (job #475178)
Cod sursa(job #475178)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
void Read();
void Solve();
void Write();
int n, mins;
int a[1001];
bool v[50005];
vector<int> sol;
int main()
{
Read();
Solve();
Write();
}
void Read()
{
ifstream fin("economie.in");
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> a[i];
fin.close();
}
void Solve()
{
sort(a + 1, a + n + 1);
for (int i = 1; i <= n; ++i)
if (v[a[i]] == 0)
{
sol.push_back(a[i]);
++mins;
for (int j = 0; j <= 50000 - a[i]; ++j)
v[j + a[i]] |= v[j];
bool ok = true;
for (int j = i + 1; j <= n; ++j)
ok &= (v[a[j]] == 1);
if (ok == true) break;
}
}
void Write()
{
ofstream fout("economie.out");
fout << mins << '\n';
for (int i = 0; i < sol.size(); ++i)
fout << sol[i] << '\n';
fout.close();
}