제출 #491658

#제출 시각아이디문제언어결과실행 시간메모리
491658Koosha_mv중앙값 배열 (balkan11_medians)C++14
100 / 100
97 ms11872 KiB
#include <bits/stdc++.h> using namespace std; #define erorp(x) cout<<#x<<"={"<<(x.F)<<" , "<<x.S<<"}"<<endl #define print(v,r) f(i,0,r) cout<<v[i]<<" "; cout<<endl #define eror(x) cout<<#x<<'='<<(x)<<endl #define f_(i,a,b) for(int i=a;i>=b;i--) #define f(i,a,b) for(int i=a;i<b;i++) #define nb(x) __builtin_popcount(x) #define Add(x,y) x=(x+y)%mod; #define maxm(a,b) a=max(a,b) #define minm(a,b) a=min(a,b) #define lst(x) x[x.size()-1] #define sz(x) int(x.size()) #define mp make_pair #define ll long long #define pb push_back #define S second #define F first const int N=1e6+99; int n,t,a[N],Mn[N],Mx[N],mark[N]; vector<int> ans; set<int> s; int prv(int x){ int res=*prev(s.upper_bound(x)); s.erase(res); return res; } int next(int x){ int res=*s.lower_bound(x); s.erase(res); return res; } int main(){ ios:: sync_with_stdio(0), cin.tie(0), cout.tie(0); cin>>n; f(i,1,n+1){ cin>>a[i]; mark[a[i]]++; } f(i,1,2*n){ if(!mark[i]){ s.insert(i); } } f_(i,n,2){ int u,v,mid=a[i],nmid=a[i-1]; if(--mark[a[i]]==0) s.insert(a[i]); if(nmid==mid){ u=prv(mid),v=next(mid); } if(nmid<mid){ u=next(mid); v=next(u); } if(mid<nmid){ u=prv(mid); v=prv(u); } ans.pb(u); ans.pb(v); } cout<<a[1]<<" "; f_(i,ans.size()-1,0){ cout<<ans[i]<<" "; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...