AcWing 830. 单调栈

 

给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。

#include<bits/stdc++.h>
#define N 100010
using namespace std;
int n,t,w,a[N],b[N];
int main()
{
    scanf("%d",&n);
    b[0]=-1;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&b[i]);
        while(w&&b[a[w]]>=b[i])w--;
        a[++w]=i;
        printf("%d ",b[a[w-1]]);
    }
    return 0;
}

 

posted @ 2021-01-08 15:27  君与  阅读(57)  评论(0)    收藏  举报