Submission #352470

#TimeUsernameProblemLanguageResultExecution timeMemory
352470iliccmarkoZalmoxis (BOI18_zalmoxis)C++14
35 / 100
1098 ms34256 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "\n"
#define INF 1000000000
#define LINF 1000000000000000LL
#define pb push_back
#define all(x) x.begin(), x.end()
#define len(s) (int)s.size()
#define test_case { int t; cin>>t; while(t--)solve(); }
#define input(n, v) {for(int i = 0;i<n;i++) cin>>v[i];}
#define output(n, v) {for(int i = 0;i<n;i++) cout<<v[i]<<" "; cout<<endl;}
#define single_case solve();
#define line cout<<"------------"<<endl;
#define ios { ios_base::sync_with_stdio(false); cin.tie(NULL); }
int n, k;
stack<int> s;
vector<pair<int, int> > v;

void rastavi(int x)
{
    while(len(s)) s.pop();
    s.push(x);
    while(len(s)&&k)
    {
        int w = s.top();
        if(w==1) cout<<w<<" ";
        else
        {
            k--;
            s.push(w-1);
            s.push(w-1);
        }
    }
    while(len(s))
    {
        cout<<s.top()<<" ";
        s.pop();
    }
}

void sredi(int x)
{
    while(len(s)&&x==s.top())
    {
        s.pop();
        x++;
    }
    s.push(x);
}

int main()
{
    ios
    cin>>n>>k;
    for(int i = 1;i<=n+1;i++)
    {
        int x;
        if(i==n+1) x = 30;
        else cin>>x;
        while(len(s)&&x>s.top())
        {
            //cout<<s.top()<<" "<<x<<endl;
            v.pb({s.top(), 1});
            sredi(s.top());
            k--;
        }
        sredi(x);
        if(i<=n) v.pb({x, 0});
    }

    for(auto x : v)
    {
        if(x.second==0) cout<<x.first<<" ";
        else rastavi(x.first);
    }




    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...