Cod sursa(job #2501129)

Utilizator Definitely_Not_Albert_GreacaCuSigurantaNuAlbert Definitely_Not_Albert_Greaca Data 29 noiembrie 2019 09:19:00
Problema Economie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <algorithm>
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;
}