Submission #1214840

#TimeUsernameProblemLanguageResultExecution timeMemory
1214840biank중앙값 배열 (balkan11_medians)C++20
100 / 100
16 ms3016 KiB
#include <bits/stdc++.h> using namespace std; #define forn(i,n) for(int i=0;i<int(n);i++) #define forsn(i,s,n) for(int i=int(s);i<int(n);i++) #define dforn(i,n) for(int i=int(n)-1;i>=0;i--) #define dforsn(i,s,n) for(int i=int(n)-1;i>=int(s);i--) #define fst first #define snd second #define pb push_back #define eb emplace_back #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() typedef long long ll; typedef vector<ll> vll; typedef vector<int> vi; typedef pair<int,int> ii; int main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vi b(n); forn(i,n) cin>>b[i]; vector<bool> used(2*n+1,false); int min_ex=1,max_ex=2*n-1; vi a; auto add=[&](int x){ assert(!used[x]); a.pb(x); used[x]=true; while(used[min_ex]) min_ex++; while(used[max_ex]) max_ex--; }; add(b[0]); forsn(i,1,n){ if(b[i]==b[i-1]){ add(min_ex); add(max_ex); }else if(b[i]>b[i-1]){ if(!used[b[i]]) add(b[i]); else add(max_ex); add(max_ex); }else{ if(!used[b[i]]) add(b[i]); else add(min_ex); add(min_ex); } } forn(i,2*n-1) cout<<a[i]<<' '; cout<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...