Pagini recente » Cod sursa (job #759115) | Cod sursa (job #3259782) | Cod sursa (job #3032739) | Cod sursa (job #358130) | Cod sursa (job #288458)
Cod sursa(job #288458)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
#define INPUT "economie.in"
#define OUTPUT "economie.out"
#define pb push_back
const int NMAX = 1001;
const int VMAX = 50001;
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
int N;
vector<int> G;
int V[ NMAX ], Valid[ VMAX ];
void readData()
{
int X;
fscanf(fin, "%d", &N);
for(int i = 1; i <= N; ++i)
fscanf(fin, "%d", &V[ i ]);
}
void solve()
{
int cont = 0;
vector<int>::iterator it;
for(int j = 1; j < VMAX; ++j)
if(j % V[ 1 ] == 0) Valid[ j ] = 1;
++cont;
G.pb(V[ 1 ]);
for(int i = 2; i <= N; ++i)
{
if(!Valid[ V[ i ] ]){
++cont;
G.pb(V[ i ]);
Valid[ V[ i ] ] = 1;
for(int j = 1; j < VMAX; ++j)
if(Valid[ j ]) Valid[ j + V[ i ] ] = 1;
}
}
fprintf(fout, "%d\n", cont);
for(it = G.begin(); it != G.end(); ++it)
fprintf(fout, "%d\n", *it);
}
int main()
{
readData();
sort(V+1, V+N+1);
solve();
fclose(fin);
fclose(fout);
return 0;
}