Cod sursa(job #2730985)

Utilizator AACthAirinei Andrei Cristian AACth Data 27 martie 2021 10:35:38
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda simulare_oni_cex Marime 1.4 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("economie.in");
ofstream g("economie.out");
//#define int long long
const int Max = 1e3 + 1;
void nos()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}
int n;
vector < int > coins;

void read()
{
    f>>n;
    int i;
    for(i=1;i<=n;i++)
    {
        int x;
        f>>x;
        coins.push_back(x);
    }
}
vector < int > selection;
bool sum_pos[50001];
void solve()
{
    sort(coins.begin(),coins.end());
    int maxx;
    int i,j;
    int last_ind = coins.size() - 1;
    maxx = coins[last_ind];
    for(i=0;i<=last_ind;i++)
        if(sum_pos[coins[i]] == 0)
    {
        //daca nu avem deja obtinut asa ceva
        int new_coin = coins[i];
        selection.push_back(new_coin);
        sum_pos[new_coin] = 1;
        int j;
        for(j = new_coin + 1; j<=maxx; j++)
            if(sum_pos[j - new_coin])
            {
                sum_pos[j] = 1;
            }

        bool is_good = true;
        for(j=i+1;j<=last_ind;j++)
            if(!sum_pos[coins[j]])
        {
            is_good = false;
            break;
        }
        if(is_good)
        {
            g<<selection.size()<<'\n';
            for(auto it : selection)
                g<<it<<'\n';
        }
    }

}
void restart()
{

}

int32_t main()
{
    read();
    solve();
    restart();
    return 0;
}