Pagini recente » Cod sursa (job #175527) | Cod sursa (job #2010954) | Cod sursa (job #285529) | Cod sursa (job #1584930) | Cod sursa (job #383525)
Cod sursa(job #383525)
#include<stdio.h>
#include<stdlib.h>
const int N=2006,M=50001;
int max,v[N],c[M],r[N],n,nr;
int cmp( const void *p,const void *q )
{
int x=*(int*)p,y=*(int*)q;
if(x>y)
return 1;
if(x<y)
return -1;
return 0;
}
void read()
{
scanf("%d",&n);
for( int i=0 ; i<n ; ++i )
{
scanf("%d",&v[i]);
if(v[i]>max)
max=v[i];
}
qsort(v,n,sizeof(v[0]),cmp);
}
void solve()
{
for( int i=0 ; i<n ; ++i )
if( c[v[i]]==0 )
{
r[++nr]=v[i];
c[v[i]]=1;
for( int j=1 ; j+v[i]<=max ; ++j )
if( c[j]!=0 )
if( c[ j + v[i] ] == 0 )
c[j+v[i]]=1;
}
}
int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
read();
solve();
printf("%d\n",nr);
for( int i=1 ; i<=nr ; ++i )
printf("%d\n",r[i]);
return 0;
}