这道题标准做法当然是直接用单调栈,但是蒟蒻总是喜欢没事找事,于是就希望用递推前缀来做做看,结果全部TLE,还不如直接暴力枚举。。。不知道怎么回事
#include<cstdio>
using namespace std;
int n;
int a[3000006];
int ans[3000006];
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
for(int i=n;i>=1;i--){
int j=i+1;
while(j<=n&&a[j]<=a[i]){
j=ans[j];
}
if(j>n) ans[i]=0;
else ans[i]=j;
}
for(int i=1;i<=n;i++){
printf("%d ",ans[i]);
}
return 0;
}