Pagini recente » Cod sursa (job #369898) | Cod sursa (job #1279331) | Cod sursa (job #295931) | Cod sursa (job #556989) | Cod sursa (job #2023246)
#include <cstdio>
#include <algorithm>
#include <bitset>
#include <vector>
using namespace std;
const int NMAX = 1005;
const int VALMAX = 50000;
bitset <VALMAX + 5> vf;
int v[NMAX];
vector <int> sol;
int main()
{
int n;
freopen("economie.in", "r", stdin);
freopen("economie.out", "w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; ++i) {
scanf("%d", &v[i]);
}
sort(v + 1, v + n + 1);
vf[0] = 1;
for(int i = 1; i <= n; ++i) {
if(!vf[v[i]]) {
sol.push_back(v[i]);
for(int j = 0; j + v[i] <= VALMAX; ++j) {
if(vf[j + v[i]] == 0 && vf[j] == 1) {
vf[j + v[i]] = 1;
}
}
}
}
int m = sol.size();
printf("%d\n", m);
for(int i = 0; i < m; ++i) {
printf("%d\n", sol[i]);
}
return 0;
}