Submission #647986

#TimeUsernameProblemLanguageResultExecution timeMemory
647986toma_ariciuZalmoxis (BOI18_zalmoxis)C++17
100 / 100
284 ms14328 KiB
/// Preset de orice altceva
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <algorithm>
#include <iomanip>

using namespace std;

//ifstream cin("test.in");
//ofstream cout("test.out");

int n, k, v[1000005], ind, diff;
vector <pair<int, bool>> sol;
vector <int> ans;

void dfs(int val)
{
    if(val == -1)
        return;
    if(v[ind] == val)
    {
        ind++;
        sol.push_back({val, 1});
        return;
    }
    if(v[ind] < val)
    {
        dfs(val - 1);
        dfs(val - 1);
    }
    else
        sol.push_back({val, 0});
}

void afis(int val)
{
    if(diff == 0 || val == 0)
    {
        cout << val << ' ';
        return;
    }
    diff--;
    afis(val - 1);
    afis(val - 1);
}

int main()
{
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
        cin >> v[i];
    v[n + 1] = 31;
    ind = 1;
    dfs(30);
    diff = n + k - sol.size();
    for(auto elem : sol)
    {
        if(elem.second == 1 || diff == 0)
            cout << elem.first << ' ';
        else
            afis(elem.first);
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...