牛客OI赛制测试赛2 C :数列下标

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37960603/article/details/82491970

题目传送门
单调队列
代码:

#include<bits/stdc++.h>
using namespace std;

const int maxn=10000+100;

struct Que{

    int val,id; 
}que[maxn];
int ans[maxn];

int main(){

    int top=0;
    int n;
    scanf("%d",&n);
    for(int i=1,val;i<=n;i++){

        scanf("%d",&val);
        while(top && que[top].val<val) ans[que[top].id]=i,top--;
        que[++top]=Que{val,i};
    }
    for(int i=1;i<=n;i++) printf("%d%c",ans[i],i==n?'\n':' ');
} 

猜你喜欢

转载自blog.csdn.net/qq_37960603/article/details/82491970