Pagini recente » Cod sursa (job #3266131) | Cod sursa (job #2128526) | Cod sursa (job #2769510) | Cod sursa (job #2699273) | Cod sursa (job #184402)
Cod sursa(job #184402)
#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;
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;
for (int i = 1, cur = 0; i <= m; ++i) {
for (int j = 0; j < s.size() && !ok[i]; ++j)
if (i - s[j] >= 0)
ok[i] = ok[i] || ok[i-s[j]];
if (i == v[cur]) {
if (!ok[i]) {
s.push_back(i);
ok[i] = true;
}
++cur;
}
}
printf("%d\n",s.size());
for (int i = 0; i < s.size(); ++i) printf("%d\n",s[i]);
return 0;
}