Submission #657752

#TimeUsernameProblemLanguageResultExecution timeMemory
657752Danilo21Zalmoxis (BOI18_zalmoxis)C++17
100 / 100
174 ms20488 KiB
#include <bits/stdc++.h> #define ll long long #define ld long double #define pb push_back #define fi first #define se second #define en '\n' #define sp ' ' #define tb '\t' #define ri(n) int n; cin >> n #define rl(n) ll n; cin >> n #define rs(s) string s; cin >> s #define rc(c) char c; cin >> c #define rv(v) for (auto &x : v) cin >> x #define pven(v) for (auto x : v) cout << x << en #define pv(v) for (auto x : v) cout << x << sp; cout << en #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define yes cout << "YES" << en #define no cout << "NO" << en #define smin(a, b) a = min(a, b) #define smax(a, b) a = max(a, b) #define ssort(a, b) if (a < b) swap(a, b) #define bitcnt(a) (__builtin_popcountll(a)) #define bithigh(a) (63-__builtin_clzll(a)) #define lg bithigh #define highpow(a) (1LL << (ll)lg(a)) using namespace std; const ll LINF = 4e18; const int mxN = 1e6+10, INF = 2e9; ll n, m; vector<int> a; void Print(stack<int> s){ while (s.size()){ cout << s.top() << sp; s.pop(); } cout << en; } void Add(int x){ if (!x || !m){ a.pb(x); return; } m--; Add(x-1); Add(x-1); } void Insert(int x, stack<int>& stk){ while (stk.size() && stk.top() == x){ stk.pop(); x++; } stk.push(x); } void Solve(){ cin >> n >> m; vector<array<int, 2> > ans; stack<int> stk; for (int i = 0; i <= n; i++){ int x; if (i < n) cin >> x; else x = 30; while (stk.size() && stk.top() < x){ int t = stk.top(); stk.pop(); ans.pb({t, 1}); m--; Insert(t+1, stk); } if (i < n) ans.pb({x, 0}); Insert(x, stk); } for (auto [x, t] : ans){ if (t) Add(x); else a.pb(x); } pv(a); } int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cerr.tie(0); cout << setprecision(12) << fixed; cerr << setprecision(12) << fixed; cerr << "Started!" << endl; int t = 1; //cin >> t; while (t--) Solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...