Pagini recente » Cod sursa (job #1707356) | Cod sursa (job #3180842) | Cod sursa (job #2894586) | Cod sursa (job #2618512) | Cod sursa (job #301224)
Cod sursa(job #301224)
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
#define IN "economie.in","r",stdin
#define OUT "economie.out","w",stdout
int N;
//vector<int> V(1005);
//vector<int> A(1004);
int V[1005] , A[100020] , B[1005];
int main()
{
freopen(IN);
freopen(OUT);
scanf("%d",&N);
int max = -20000000;
for(int i = 1 ; i <= N ; ++i)
{
scanf("%d",&V[i]);
if(max < V[i]) max = V[i];
}
sort(V + 1 , V + N + 1);
int E = 1 , ban ;
for(int i = 1 ; i <= N ; ++i)
{
ban = V[i];
if(A[ban] == 0) { B[E++] = V[i]; A[ban] = 1; }
ban += V[i];
while(ban <= max && A[ban] != 1)
{
A[ban] = 1;
ban += V[i];
}
for(int p = 1 ; p <= max ; ++p)
if(A[p + B[E - 1]] != 1 && A[p] == 1) A[p + B[E - 1]] = 1;
}
printf("%d\n",E - 1);
for(int i = 1 ; i <= E - 1 ; ++i) printf("%d\n",B[i]);
return 0;
}