Pagini recente » Cod sursa (job #455126) | Borderou de evaluare (job #1767053) | Cod sursa (job #2761945) | Borderou de evaluare (job #2051663) | Cod sursa (job #2509704)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin("economie.in");
ofstream fout("economie.out");
const int Nmax = 1000, Vmax = 50000;
queue <int> q;
int n, nr, v[Nmax + 5];
bool b[Vmax + 5];
void Read(){
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i];
}
void Solve(){
sort(v + 1, v + n + 1);
b[0] = 1;
for (int i = 1; i <= n; i++)
if (!b[v[i]]){
nr++;
q.push(v[i]);
for (int j = 0; j + v[i] <= Vmax; j++)
if (b[j])
b[j + v[i]] = 1;
}
}
void Print(){
fout << nr << '\n';
while (!q.empty()){
fout << q.front() << '\n';;
q.pop();
}
}
int main(){
Read();
Solve();
Print();
return 0;
}