作者:
废物宝宝
,
2022-06-24 00:12:47
,
所有人可见
,
阅读 1
//dfs
#include<iostream>
#include<vector>
using namespace std;
const int N=35;
int n,f[N];
vector<int> res[N];
int getmin(int l,int r){
int m=l;
for(int i=l;i<=r;i++)
if(f[m]>f[i])
m=i;
return m;
}
void dfs(int l,int r,int d){
if(l>r)return;
int root=getmin(l,r);
res[d].push_back(f[root]);
dfs(l,root-1,d+1);
dfs(root+1,r,d+1);
}
int main(){
cin>>n;
for(int i=0;i<n;i++)cin>>f[i];
dfs(0,n-1,0);
for(int i=0;res[i].size();i++){
for(auto t:res[i])
printf("%d ",t);
}
return 0;
}