这代码有毛病吗?
懵逼就问
#include<bits/stdc++.h>
#define MAXN 3000020
using namespace std;
stack<int>val,num;
int fr[MAXN];
int fn[MAXN];
int n;
int main() {
scanf("%d",&n);
for(int i=1; i<=n; i++) scanf("%d",&fr[i]);
for(int i=n; i>=1; i--) {
if(val.empty()) {
val.push(fr[i]);
num.push(i);
fn[i]=0;
} else {
while(fr[i]>val.top()&&!val.empty()) {
val.pop();
num.pop();
}
if(val.empty()) {
val.push(fr[i]);
num.push(i);
fn[i]=0;
} else {
fn[i]=num.top();
val.push(fr[i]);
num.push(i);
}
}
}
for(int i=1; i<=n; i++) printf("%d ",fn[i]);
return 0;
}