Cod sursa(job #3259092)

Utilizator vladsoartavlad sofronea vladsoarta Data 25 noiembrie 2024 09:53:08
Problema Economie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <bitset>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("economie.in");
ofstream cout("economie.out");

vector<int>elemselectate;
short v[1001],n;
bitset<50001>frecv;

bool canyoubuildnumber(int num){

    if(elemselectate.size() == 0)
        return 0;
    int ind=1;
    frecv.reset();
    for(auto elem:elemselectate){
        frecv[elem]=1;
    }
    for(int h=0;h<elemselectate.size();h++)
        for(int i=1;i<=num-elemselectate[h];i++)
        {
            if(frecv[i] == 1)
                frecv[i+elemselectate[h]]=1;
        }
    return frecv[num];
}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    sort(v+1,v+n+1);
    for(int i=1;i<=n;i++)
    {
        if(canyoubuildnumber(v[i]) == 1)
            continue;
        elemselectate.push_back(v[i]);
    }

    cout<<elemselectate.size()<<'\n';
    for(int i=0;i<elemselectate.size();i++)
        cout<<elemselectate[i]<<'\n';
    return 0;
}