Pagini recente » Cod sursa (job #442485) | Cod sursa (job #62861) | Cod sursa (job #3189115) | Cod sursa (job #2284052) | Cod sursa (job #970952)
Cod sursa(job #970952)
#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#ifdef INFOARENA
#define cin fin
#define cout fout
#endif
ifstream fin("economie.in");
ofstream fout("economie.out");
const int VMax = 50100;
int N;
bool A[VMax];
vector<int> solution, values;
int main() {
cin >> N; A[0] = true;
for (int i = 1; i <= N; i++) {
int X;
cin >> X;
values.push_back(X);
}
sort(values.begin(), values.end());
for (int i = 1; i <= N; i++) {
int X = values.at(i - 1);
if (!A[X]) {
solution.push_back(X);
for (int j = 0; j < VMax; j++) {
if (A[j] && j + X <= VMax) {
A[j + X] = true;
}
}
}
}
cout << solution.size() << '\n';
for (vector<int>::iterator it = solution.begin(); it != solution.end(); it++)
cout << *it << ' ';
cout << '\n';
}