Mai intai trebuie sa te autentifici.

Cod sursa(job #401097)

Utilizator perticas_catalinperticas catalin perticas_catalin Data 22 februarie 2010 13:44:42
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

#define VM 50005
#define NM 1005

int L[VM],V[NM];

char u[VM];

int main()
{
    int N;
    
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    
    scanf("%d",&N);
    
    for(int i=1;i<=N;++i)
       scanf("%d",&V[i]);
       
    sort(V+1,V+N+1);   
    
    int dim=1;
    L[dim]=0;
    u[0]=1;
    
    int ans=0;
    
    int fans[1005];
    
    for(int i=1;i<=N;++i)
       if(!u[V[i]])
       {
          fans[++ans]=V[i];
                     
          int ldim=dim;
          
          for(int j=1;j<=ldim;++j)
             for(int k=1;L[j]+V[i]*k<=V[N];++k)
                 if(!u[L[j]+V[i]*k])
                 {
                    u[L[j]+V[i]*k]=1;
                    L[++dim]=L[j]+V[i]*k;
                 }
       }
    
    printf("%d\n",ans);
    
    for(int i=1;i<=ans;++i)
       printf("%d\n",fans[i]);
    
    return 0;
}