Submission #352471

#TimeUsernameProblemLanguageResultExecution timeMemory
352471iliccmarkoZalmoxis (BOI18_zalmoxis)C++14
100 / 100
180 ms12396 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(); s.pop(); 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...