Pagini recente » Cod sursa (job #871121) | Cod sursa (job #1458238) | Cod sursa (job #486489) | Cod sursa (job #748030) | Cod sursa (job #184350)
Cod sursa(job #184350)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1000;
const int M = 50000;
int n,m;
int v[N];
bool ok[M+1];
vector<int> s;
void insert ( int k ) {
// printf("Insert %d\n",v[k]);
s.push_back(v[k]);
for (int i = v[k]; i <= m; ++i) ok[i] = ok[i] || ok[i-v[k]];
// for (int i = 0; i <= m; ++i) printf("%d ",(int)ok[i]);
// printf("\n");
}
int main() {
freopen("economie.in","rt",stdin);
freopen("economie.out","wt",stdout);
scanf("%d",&n);
for (int i = 0; i < n; ++i) scanf("%d",&v[i]);
sort(v,v+n);
m = v[n-1];
ok[0] = true;
insert(0);
for (int i = 1; i < n; ++i)
if (!ok[i]) insert(i);
printf("%d\n",s.size());
for (int i = 0; i < s.size(); ++i) printf("%d\n",s[i]);
return 0;
}