P5788 【模板】单调栈

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int N=3e6+10;
int a[N];
int ans[N];

int n;

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }

    stack<int> stk;

    for(int i=1;i<=n;i++){
        while(!stk.empty()&&a[i]>a[stk.top()]){
            ans[stk.top()]=i;
            stk.pop();
        }

        stk.push(i);
    }

    for(int i=1;i<=n;i++) cout<<ans[i]<<" ";

    return 0;
}
posted @ 2026-02-05 20:21  AnoSky  阅读(7)  评论(0)    收藏  举报