Cod sursa(job #3348321)

Utilizator alexkAlexandru Kelemen alexk Data 20 martie 2026 19:20:22
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
ifstream cin("economie.in");
ofstream cout("economie.out");
const int nmax=1e3, vmax=5e4;
int n, v[nmax+5];
bool gr[vmax+5];
vector<int>sol;
set<int>s;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        int x; cin>>x;
        s.insert(x);
    }
    sol.push_back(*s.lower_bound(1));
    gr[sol[0]]=true;
    for(int i=sol[0]+1;i<=vmax;i++)
    {
        int len=sol.size();
        bool newsol=true, inset=(s.find(i)!=s.end());
        for(int j=0;j<len;j++)
        {
            if(gr[i-sol[j]]==true)
            {
                newsol=false;
                break;
            }
        }
        if(inset==true && newsol==true)
        {
            sol.push_back(*s.lower_bound(i));
            gr[i]=true;
        }else if(newsol==false)
            gr[i]=true;
    }
    int len=sol.size();
    cout<<len<<'\n';
    for(int i=0;i<len;i++)
        cout<<sol[i]<<'\n';
    return 0;
}