究竟有没有数据卡得掉这个dp
f[i]表示i右边第一个大于i的位置
这个交上去跑了300多毫秒
#include<bits/stdc++.h>
using namespace std;
int f[4005050],n,a[4005050];
long long ans;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
f[n]=0;
for(int i=n-1;i>=1;i--){
int j=i+1;
while(j&&a[j]<=a[i]){
j=f[j];
}
f[i]=j;
}
for(int i=1;i<=n;i++){
cout<<f[i]<<" ";
}
}