Pagini recente » Cod sursa (job #2302455) | Cod sursa (job #1022784) | Cod sursa (job #2177399) | Cod sursa (job #1613852) | Cod sursa (job #2730985)
#include <bits/stdc++.h>
using namespace std;
ifstream f("economie.in");
ofstream g("economie.out");
//#define int long long
const int Max = 1e3 + 1;
void nos()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
}
int n;
vector < int > coins;
void read()
{
f>>n;
int i;
for(i=1;i<=n;i++)
{
int x;
f>>x;
coins.push_back(x);
}
}
vector < int > selection;
bool sum_pos[50001];
void solve()
{
sort(coins.begin(),coins.end());
int maxx;
int i,j;
int last_ind = coins.size() - 1;
maxx = coins[last_ind];
for(i=0;i<=last_ind;i++)
if(sum_pos[coins[i]] == 0)
{
//daca nu avem deja obtinut asa ceva
int new_coin = coins[i];
selection.push_back(new_coin);
sum_pos[new_coin] = 1;
int j;
for(j = new_coin + 1; j<=maxx; j++)
if(sum_pos[j - new_coin])
{
sum_pos[j] = 1;
}
bool is_good = true;
for(j=i+1;j<=last_ind;j++)
if(!sum_pos[coins[j]])
{
is_good = false;
break;
}
if(is_good)
{
g<<selection.size()<<'\n';
for(auto it : selection)
g<<it<<'\n';
}
}
}
void restart()
{
}
int32_t main()
{
read();
solve();
restart();
return 0;
}