Cod sursa(job #114010)

Utilizator Binary_FireFlorin Pg Binary_Fire Data 12 decembrie 2007 11:46:43
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <vector>
#include <algorithm>

using namespace std;

const int Vmax = 50100;

int N,dp[Vmax];
vector <int> v,ret;

int main()
{
    int i,j,a;
    
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    
    scanf("%d",&N);
    
    for (i=0;i<N;++i)
    {
        scanf("%d",&a);
        v.push_back(a);
    }
    
    sort(v.begin(),v.end());
    
    dp[0]=1;
    
    for (i=0;i<N;++i)
        if ( dp[v[i]] == 0 )
        {
           ret.push_back(v[i]);
           for (j=0;j+v[i]<Vmax;++j) 
               if ( dp[j] ) 
                  dp[j+v[i]]=1;
        }
    
    printf("%d\n",ret.size());
    
    for (i=0;i<ret.size();++i)
        printf("%d\n",ret[i]);
    
    return 0;
}