Pagini recente » Cod sursa (job #696753) | Cod sursa (job #3144102) | Cod sursa (job #785122) | Cod sursa (job #640406) | Cod sursa (job #300651)
Cod sursa(job #300651)
#include<stdio.h>
#define N 1001
#define M 50001
int v[N],pz,n,ap[M],cit[M],val_max,q[N];
void fcit()
{
//citire+sortare <vector de aparitii>
int x;
scanf("%d",&n);
for( int i=0 ; i<n ; ++i )
{
scanf("%d",&x);
cit[x]++;
if(x>val_max)
val_max=x;
}
for( int i=1 ; i<=val_max ; ++i )
while( cit[i]-- )
v[pz++]=i;
pz=0;
/*for( int i=0 ; i<n ; ++i )
printf("%d\n",v[i]);*/
}
void calc()
{
//adaugarea primei monede+marcarea multiplilor sai
q[pz++]=v[0];
for( int j=0 ; v[0]*j<=v[n-1] ; ++j )
ap[v[0]*j]=1;
//pentru celelalte monede
for( int i=1 ; i<n ; ++i )
if( ap[v[i]]==0 )
{
q[pz++]=v[i];
for( int j=0 ; j+v[i]<v[n-1] ; ++j )
if( ap[j] )
ap[ j + v[i] ]=1;
}
//afisare
printf("%d\n",pz);
for(int i=0 ; i<pz ; ++i )
printf("%d\n",q[i]);
}
int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
fcit();
calc();
return 0;
}