单调栈

#include<bits/stdc++.h>
#define int long long 
#define rep(i,x,y) for(int i=x;i<=y;i++) 

using namespace std;
vector<int>G[514154];
int n,m,e;
int ans[61145014];
int a[61516501];

signed main() {
	cin>>n;
	rep(i,1,n) cin>>a[i];
	
	stack<int>s;
	stack<int>id;
	for(int i=n;i>=1;i--) {
		while(!s.empty()) {
			if(s.top()<=a[i]) s.pop(),id.pop();
			else break;
		}
		if(s.empty()) ans[i]=0;
		else 
		ans[i]=id.top();
		s.push(a[i]);
		id.push(i);
	}
	rep(i,1,n) cout<<ans[i]<<' ';
	return 0;
}
posted @ 2025-03-21 17:45  houpingze  阅读(12)  评论(0)    收藏  举报