Submission #366995

#TimeUsernameProblemLanguageResultExecution timeMemory
366995rqiZalmoxis (BOI18_zalmoxis)C++14
100 / 100
433 ms52772 KiB
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pi; typedef vector<int> vi; typedef vector<pi> vpi; #define mp make_pair #define f first #define s second #define pb push_back #define sz(x) (int)(x).size() const int mx = 1000005; int N, K; vi additions[mx]; int origS[mx]; void outputSplit(int val){ if(val == 0){ cout << val << " "; return; } if(K >= 1){ K--; outputSplit(val-1); outputSplit(val-1); return; } cout << val << " "; } int main(){ cin >> N >> K; vpi S; for(int i = 1; i <= N; i++){ int x; cin >> x; S.pb(mp(x, i)); origS[i] = x; } for(int val = 0; val <= 29; val++){ vpi nS; for(int i = 0; i < sz(S); i++){ if(S[i].f != val){ nS.pb(S[i]); continue; } if(i+1 < sz(S) && S[i].f == S[i+1].f){ nS.pb(mp(S[i].f+1, S[i+1].s)); i++; } else{ additions[S[i].s].pb(S[i].f); nS.pb(mp(S[i].f+1, S[i].s)); } } S = nS; // cout << val << "\n"; // for(auto u: S){ // cout << "(" << u.f << ", " << u.s << ") "; // } // cout << "\n"; } for(int i = 1; i <= N; i++){ K-=sz(additions[i]); } for(int i = 1; i <= N; i++){ cout << origS[i] << " "; for(auto u: additions[i]){ outputSplit(u); } } cout << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...