题目
思路
单调栈模板
代码
#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int n,a[3000010],ans[3000010];
stack<int>q;
int main()
{
scanf("%d",&n);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
for(int i=n; i>=1; i--)
{
while(!q.empty()&&a[q.top()]<=a[i])
q.pop();
if(!q.empty())
ans[i]=q.top();
q.push(i);
}
for(int i=1; i<=n; i++)
printf("%d ",ans[i]);
return 0;
}