Submission #74147

#TimeUsernameProblemLanguageResultExecution timeMemory
74147adminZalmoxis (BOI18_zalmoxis)C++17
100 / 100
415 ms62304 KiB
/* lightly tested */ #include <cmath> #include <cassert> #include <iostream> #include <list> #include <deque> using namespace std; int main(){ int n, k; cin >> n >> k; deque<int> st; list<int> res; list<list<int>::iterator> increasable; int sum = 0; for(int i = 0; i <= n; ++i){ int x; if(i == n) x = 30; else cin >> x, sum += (1<<x); while(!st.empty() && st[0] < x){ res.push_back(st[0]); increasable.push_back(--res.end()); ++st[0]; while(st.size() > 1 && st[0] == st[1]){ st.pop_front(); ++st[0]; } } st.push_front(x); while(st.size() > 1 & st[0] == st[1]){ st.pop_front(); ++st[0]; } if(i != n) res.push_back(x); } while(res.size() < n+k){ auto it = increasable.front(); increasable.pop_front(); if(*it == 0) continue; --*it; increasable.push_back(it); increasable.push_back(res.insert(it, *it)); } for(auto x : res) cout << x << ' '; return 0; }

Compilation message (stderr)

zalmoxis.cpp: In function 'int main()':
zalmoxis.cpp:31:25: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
         while(st.size() > 1 & st[0] == st[1]){
               ~~~~~~~~~~^~~
zalmoxis.cpp:37:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(res.size() < n+k){
           ~~~~~~~~~~~^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...