Submission #668180

#TimeUsernameProblemLanguageResultExecution timeMemory
6681801zaid1Zalmoxis (BOI18_zalmoxis)C++17
5 / 100
469 ms91004 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'

const int M = 3e5+10;

signed main() {
    cin.tie(0)->sync_with_stdio(0);

    int n, k;
    cin >> n >> k;

    vector<int> v(n), v1;
    for (int &i:v) cin >> i;

    map<int, int> vis;
    reverse(v.begin(), v.end());
    vector<int> st; st.push_back(v.back());

    v1 = {v.back()};
    v.pop_back();
    while (st.back() != 30) {
        if (v.empty()) {
            for (int i = st.back(); i < 30; i++) {
                k--;
                vis[v1.size()] = true;
                v1.push_back(i);
            }

            break;
        } else {
            int h = v.back();
            int w = st.back();

            if (h == w) {
                k--;
                vis[v1.size()] = true;
                v1.push_back(h);
                v.pop_back();
                while (st.size() && h == w) {
                    h = w+1;
                    st.pop_back();
                    if (st.size()) w = st.back();
                } st.push_back(h);
            } else if (h < w) {
                k--;
                v.pop_back();
                st.push_back(h);
                vis[v1.size()] = true;
                v1.push_back(h);
            } else {
                v.push_back(w);
            }
        }
    }

    vector<int> ans;
    for (int i = 0; i < v1.size(); i++) {
        if (vis[i]&&k) {
            int l = v1[i]-1;
            for (int j = 1; l >= 0 && k > 1; j++, k--) {
                ans.push_back(l--);
            }

            k--;
            ans.push_back(l+1);
        } else ans.push_back(v1[i]);
    } for (int i:ans) cout << i << ' '; cout << endl;

    return 0;
}

/*
5 1
29 27 25 25 28
*/

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:59:23: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |     for (int i = 0; i < v1.size(); i++) {
      |                     ~~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...