Cod sursa(job #2501116)

Utilizator NashikAndrei Feodorov Nashik Data 29 noiembrie 2019 09:02:59
Problema Economie Scor 0
Compilator cpp-64 Status done
Runda simu Marime 0.64 kb
#include <iostream>

using namespace std;
int v[1005];
bool ruc[50005];
int sol[1005],cnt;
int main()
{
    int n,maxim=-1;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v[i];
        maxim=max(maxim,v[i]);
    }
    sort(v+1,v+n+1);
    ruc[0]=1;
    for(int i=1;i<=n;i++){
        if(ruc[v[i]]==0){
            for(int j=0;j<=maxim;j++){
                if(ruc[j]==1 and j+v[i]<=maxim){
                    ruc[j+v[i]]=1;
                }
                if(j+v[i]>maxim)
                    break;
            }
            sol[++cnt]=v[i];
        }
    }
    cout<<cnt<<"\n";
    for(int i=1;i<=cnt;i++)
        cout<<sol[i]<<"\n";
    return 0;
}