Pagini recente » Cod sursa (job #2455496) | Cod sursa (job #2145671) | Cod sursa (job #170886) | Cod sursa (job #853455) | Cod sursa (job #970951)
Cod sursa(job #970951)
#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 = 100100;
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 i = 0; i < VMax; i++) {
if (A[i] && i + X <= VMax) {
A[i + X] = true;
}
}
}
}
cout << solution.size() << '\n';
for (vector<int>::iterator it = solution.begin(); it != solution.end(); it++)
cout << *it << ' ';
cout << '\n';
}