#include <stdio.h>
#include <stdlib.h>
#define N 3000010
int stk[N],tt,a[N],q[N],e[N],qq;
int main(){
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=n;i>0;i--){
while(tt&&stk[tt]<=a[i]) tt--;
if(tt==0) q[qq++]=0;
else {
q[qq++]=e[tt];
}
stk[++tt]=a[i];
e[tt]=i;
}
for(int i=qq-1;i>=0;i--){
printf("%d ",q[i]);
}
return 0;
}
------------
不会上传图片
codeblocks输入
5
1 4 2 3 5
运行结果
2 3 4 0
Process returned 0 (0x0) execution time : 15.813 s
Press any key to continue.
各位大神帮忙看看