Pagini recente » Cod sursa (job #2123328) | Cod sursa (job #2323706) | Cod sursa (job #2963636) | Cod sursa (job #2373870) | Cod sursa (job #324778)
Cod sursa(job #324778)
#include <stdio.h>
#define Nmax 1005
#define Vmax 50005
int bif[Vmax],a[Nmax],b[Nmax];
long i,j,n,max,nr,z,k;
void sort(long l,long r){
long i,j,x,y;
i=l; j=r; x=a[l +(r-l)/2];
do{
while(a[i]<x) ++i;
while(x<a[j]) --j;
if(i<=j){
y=a[i]; a[i]=a[j]; a[j]=y;
++i; --j;
}
} while(i<=j);
if(i<r) sort(i,r);
if(l<j) sort(l,j);
}
int main(){
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;++i) scanf("%ld",&a[i]);
sort(1,n);
bif[0]=1;
for(i=1;i<=n;++i)
if(bif[a[i]]==0){
b[++z]=a[i];
for(k=0;k<=a[n];++k)
if(bif[k] && !bif[k+a[i]]) bif[k+a[i]]=1;
}
printf("%ld\n",z);
for(i=1;i<=z;++i) printf("%ld\n",b[i]);
fclose(stdin); fclose(stdout);
return 0;
}