Pagini recente » Cod sursa (job #190445) | Cod sursa (job #980947) | Cod sursa (job #1666352) | Cod sursa (job #1067232) | Cod sursa (job #128192)
Cod sursa(job #128192)
#include<stdio.h>
int a[50001],s[50001],n,m,x,i,j,v[1001];
int poz(int st,int dr)
{int x=0,y=-1,aux;
while(st<dr)
{if(v[st]>v[dr])
{aux=x;x=-y;y=-aux;
aux=v[st];v[st]=v[dr];v[dr]=aux;}
st=st+x;dr=dr+y;}
return st;}
void sort(int st,int dr)
{if(st>=dr) return;
int k=poz(st,dr);
sort(st,k-1);
sort(k+1,dr);}
int main()
{freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&v[i]);
sort(1,n);
for(i=1;i<=n;i++)
{x=v[i];
if(a[x]) continue;
a[x]=1;
for(i=1;i<=50000-x;i++) if(a[i]) a[i+x]=1;
s[++m]=x;}
printf("%d\n",m);
for(i=1;i<=m;i++)
printf("%d\n",s[i]);
fclose(stdout);
return 0;}