Cod sursa(job #2557538)

Utilizator As932Stanciu Andreea As932 Data 25 februarie 2020 21:00:55
Problema Economie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <vector>
#include <bitset>
#include <algorithm>
#define nmax 1002
#define vmax 50002
using namespace std;
ifstream fin("economie.in");
ofstream fout("economie.out");

int n,maxx;
int mon[nmax];
bitset <vmax> ap;
vector <int> ans;

int main()
{
    fin>>n;

    for(int i=1;i<=n;i++)
    {
        fin>>mon[i];
        maxx=max(maxx,mon[i]);
    }
    sort(mon+1,mon+n+1);

    ap[0]=1;
    for(int i=1;i<=n;i++)
    {
        if(ap[mon[i]]==0)
            ans.push_back(mon[i]);
        else
        {
            for(int j=0;j+mon[i]<=maxx;j++)
                if(ap[j]==1)
                    ap[mon[i]+j]=1;
        }
    }

    fout<<ans.size()<<"\n";
    for(int i=0;i<ans.size();i++)
        fout<<ans[i]<<"\n";

    return 0;
}