思路:
我们可以用单调栈来做这一道题,我们可以用倒序循环,然后用ans来装答案,因为ans[n]=0,所以i=n-1,然后里面用一个sum来记录第一个数右边的,再开个while循环来比较左右的数,然后用数组记录答案
CodeCodeCode:
#include<cstdio>
int n,sum,a[100010],ans[100001],b;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=n-1;i>0;i--)//倒序循环
{
sum=i+1;//右边的
while(a[i]>=a[sum] && a[sum]!=0)//比较
sum=ans[sum];
ans[i]=sum;//记录答案
}
for(int i=1;i<=n;i++)
printf("%d\n",ans[i]); //输出
return 0;
}