题目大意:
给你一个1->n的排列和一个栈,入栈顺序给定
你要在不打乱入栈顺序的情况下,对数组进行从大到小排序
当无法完全排序时,请输出字典序最大的出栈序列
因为要按照字典序输出,直接做一遍循环,从1开始直接把从当前位置到n的之间的最大的数字之间的数字全部压栈,然后弹掉栈顶最大的数组,如此往复,直至最后再将栈里的元素全部弹出就好了。
代码:
#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <stack>
#include <string.h>
using namespace std;
const int N=1000005;
stack<int >sta;
int n