Pagini recente » Cod sursa (job #706601) | Cod sursa (job #251609) | Cod sursa (job #1484335) | Cod sursa (job #470170) | Cod sursa (job #112697)
Cod sursa(job #112697)
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1000;
const int VM = 5000;
int nv,n;
int v[N],a[N];
int wh[VM+1];
int main() {
freopen("economie.in","rt",stdin);
freopen("economie.out","wt",stdout);
scanf("%d",&nv);
int max = 0;
for (int i = 0; i < nv; ++i) {
scanf("%d",&v[i]);
if (max < v[i]) max = v[i];
}
sort(v,v+nv);
n = 1; a[0] = v[0];
for (int i = 1; i < nv-1; ++i)
if (a[n-1] != v[i]) a[n++] = v[i];
wh[0] = false;
wh[1] = true;
for (int i = 2; i <= max; ++i) wh[i] = true;
vector<int> s;
for (int i = 0; i < n; ++i) {
if (wh[a[i]]) {
s.push_back(a[i]);
for(int j = 1; j <= max; ++j) {
if (j - a[i] >= 0 && !wh[j-a[i]]) {
wh[j] = false;
}
}
}
}
printf("%d\n",s.size());
for (int i = 0; i<s.size(); ++i) printf("%d\n",s[i]);
return 0;
}