Pagini recente » Monitorul de evaluare | Cod sursa (job #1864746) | Cod sursa (job #2650938) | Cod sursa (job #1442857) | Cod sursa (job #2658630)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin( "economie.in" );
ofstream fout( "economie.out" );
const int MaxN = 1002;
const int MaxNr = 50000;
int v[MaxN];
int m[MaxN];
vector<int> t;
int f[MaxNr + 2];
int main() {
int n;
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]] == 0 ) {
t.push_back( v[i] );
f[v[i]] = 1;
for ( int j = 1; j + v[i] <= MaxNr; ++j ) {
if ( f[j] == 1 ) {
f[j + v[i]] = 1;
}
}
}
}
fout << t.size() << "\n";
for ( int i = 0; i < (int)t.size(); ++i ) {
fout << t[i] << "\n";
}
fin.close();
fout.close();
return 0;
}