懵逼就问
查看原帖
懵逼就问
987871
hopelessness楼主2023/8/4 21:13

这代码有毛病吗?
懵逼就问

#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;
}
2023/8/4 21:13
加载中...