https://www.acwing.com/problem/content/832/
#include <iostream> using namespace std; const int N = 100010; int stk[N], tt; int main() { int n; cin >> n; while (n -- ) { int x; scanf("%d", &x); while (tt && stk[tt] >= x) //当栈是不空的并且栈里的元素是大于当 前这个数字的,那么栈里的元素就不会被用到 tt -- ; if (!tt) printf("-1 "); //如果都大于,说明没有,就输出-1 else printf("%d ", stk[tt]);//如果存在小于的,就输出 stk[ ++ tt] = x;//然后把x放进去 } return 0; }