#include<iostream>
using namespace std;
const int N = 100010;
int nums[N],stk[N],tt,M;
int main(){
cin>>M;
/* tt = 0; C++初始化为0,这句没必要写
while(tt && stk[tt] >= nums[i]) tt--;
if(tt){。。。}
注意这里stk[0]我们是没有用到的,存放数据是从1开始的
为什么这样做,因为我们用if(tt)来判断的 并且while里面是tt == 0来判断的*/
//若初始化tt=-1并且判断改为tt!=-1的话,stk[0]就可以被用到了
tt= -1;
for(int i = 0; i < M; i++){
cin>>nums[i];
while(tt != -1 && stk[tt] >= nums[i]) tt--;
if(tt!=-1) {
cout<<stk[tt]<<" ";
}
else {
cout<<-1<<" ";
}
stk[++tt] = nums[i];
}
return 0;
}
兄弟,为什么还要开一个nums数组