#include <iostream> using namespace std; int h[100]; int n; void siftdown(int i){ int t, flag = 0; while(i*2 <= n && flag == 0){ if(h[i] > h[i*2]){ t = i*2; }else { t = i; } if(i*2+1 <= n && h[t] > h[i*2+1]){ t = i*2+1; } if(t != i){ swap(h[i], h[t]); i = t; }else { flag = 1; } } } void siftup(int i){ int flag = 0; if(i == 1){ return ; } while(i != 1 && flag == 0){ if(h[i] < h[i/2]){ swap(h[i], h[i/2]); i /= 2; }else { flag = 1; } } return ; } int main(){ cin>>n; for(int i=1; i<=n; i++){ cin>>h[i]; } // siftdown(1); // for(int i=1; i<=n; i++){ // cout<<h[i]<<' '; // } cout<<endl<<"--------------------------"<<endl; int m; cin>>m; for(int i=1; i<=m; i++){ cin>>h[++n]; // siftup(n); for(int i=n/2; i>=1; i--){ siftdown(i); } } for(int i=1; i<=n; i++){ cout<<h[i]<<' '; } return 0; } /*测试数据 14 23 2 5 12 7 17 25 19 36 99 22 28 46 92 1 3 */