Pagini recente » Cod sursa (job #1310613) | Cod sursa (job #2288069) | Cod sursa (job #150815) | Cod sursa (job #1091082) | Cod sursa (job #2730978)
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
int N, k, v[1005], sol[50005], f[50005];
queue < int > Q;
ifstream fin("economie.in");
ofstream fout("economie.out");
int main() {
fin >> N;
for (int i = 1; i <= N; ++ i)
fin >> v[i];
sort(v + 1, v + N + 1);
for (int i = 1; i <= N; ++ i) {
if (!f[v[i]]) {
sol[++ k] = v[i];
f[v[i]] = 1;
for (int j = 1; j <= 50000; ++ j)
if (f[j])
Q.push(j);
while (!Q.empty()) {
int n = Q.front();
if (n + v[i] <= 50000 && !f[n + v[i]]) {
f[n + v[i]] = 1;
Q.push(n + v[i]);
}
Q.pop();
}
}
}
fout << k << "\n";
for (int i = 1; i <= k; ++ i)
fout << sol[i] << " ";
return 0;
}