Cod sursa(job #153646)

Utilizator alexeiIacob Radu alexei Data 10 martie 2008 17:32:13
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

#define nmax 50002
#define nmic 1001
int a[nmax],sol[nmic],nr[nmic];

int main()
{
 freopen("economie.in","r",stdin);
 freopen("economie.out","w",stdout);
 
 int n,max=0,i,j;
 scanf("%d",&n);
 
 
 for(i=1; i<=n; ++i){
          scanf("%d",&nr[i]);   
          if(max<nr[i])
          max=nr[i];}
 
 sort(nr+1,nr+1+n);
 
int nrsol=0,val; 
 
 a[0]=1;
 
 for(i=1; i<=n; ++i){
          
          if( !a[nr[i]] ){       
          ++nrsol;
          sol[nrsol]=nr[i];
          val=nr[i];
          
          for(j=val; j<=max; ++j)
                   if( j-val>=0){
                    if(a[j-val]==1)
                    a[j]=1;
                    }
                   else{
                       if( !j%val )
                       a[j]=1;
                       }
          }
}
    
    printf("%d\n",nrsol);
    
    for(i=1; i<=nrsol; ++i)
    printf("%d\n",sol[i]);
    
    return 0;
}