单调栈
用来求一个数组中离一个数最近且小于他的数
形成一个单调有序数组 ,powerby stack
代码如下
#include <stdio.h>
#include <iostream>
using namespace std;
const int N=100010;
int n;
int stk[N],tt;
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
while(tt&&stk[tt]>=x) tt--;
if(tt) cout<<stk[tt]<<' ';
else cout<<-1<<' ';
stk[++tt]=x;
}
return 0;
}