#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
vector<int> res;
function<void(int, int)> build1 = [&](int l, int r) {
if (l > r) return;
int tl = l + 1, tr = r;
while (tl <= r && v[tl] < v[l]) tl++;
while (tr > l && v[tr] >= v[l]) tr--;
if (tl - tr != 1) return;
build1(l + 1, tr);
build1(tl, r);
res.push_back(v[l]);
};
function<void(int, int)> build2 = [&](int l, int r) {
if (l > r) return;
int tl = l + 1, tr = r;
while (tl <= r && v[tl] >= v[l]) tl++;
while (tr > l && v[tr] < v[l]) tr--;
if (tl - tr != 1) return;
build2(l + 1, tr);
build2(tl, r);
res.push_back(v[l]);
};
build1(0, n - 1);
if (res.size() == n) {
cout << "YES" << "\n";
for (int i = 0; i < res.size(); i++) {
cout << res[i] << " "[i == res.size() - 1];
}
return 0;
}
res.clear();
build2(0, n - 1);
if (res.size() == n) {
cout << "YES" << "\n";
for (int i = 0; i < res.size(); i++) {
cout << res[i] << " "[i == res.size() - 1];
}
return 0;
}
cout << "NO" << "\n";
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
2020-03-15 (Good topic)二分法:x的平方根