AcWing 830. 单调栈

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;
}

 

posted @ 2019-11-04 00:58  晴屿  阅读(175)  评论(0编辑  收藏  举报