#include <bits/stdc++.h>using namespace std;void dkr_tree() {int k = top; // 保存当前栈顶指针// 沿着右链寻找第一个小于当前值的节点while(k > 0 && a[stk[k]] > a[i]) // stk[]是单调栈,a[]是原始数组,i是当前节点索引{k--; // 向上回溯查找}// 维护树结构关系if(k) // 如果存在父节点{rs[stk[k]] = i; // 将当前节点设为父节点的右孩子 (rs[]右孩子数组)}if(k < top) // 栈顶发生变化说明存在被弹出的节点{ls[i] = stk[k+1]; // 将被弹出的节点设为当前节点的左孩子 (ls[]左孩子数组)}// 更新单调栈stk[++k] = i; // 将当前节点压入栈中top = k; // 更新栈顶指针}int main(){return 0;}