C++ 代码
#include <iostream>
using namespace std;
const int N = 100010;
int num[N],ne[N];
int n;
int main()
{
scanf("%d",&n);
for(int i = 0;i<n;i++) scanf("%d",num+i);
ne[0]=-1;
for(int i = 1;i<n;i++)
{
if(num[i]>num[i-1]) ne[i]=i-1;
else
{
int k = ne[i-1];
while(k!=-1&&num[i]<=num[k]) k=ne[k];
ne[i]=k;
}
}
for(int i = 0;i < n; i++)
{
if(ne[i]==-1) cout<<-1<<" ";
else cout<<num[ne[i]]<<" ";
}
}