单调栈经典题求助,样例没过
查看原帖
单调栈经典题求助,样例没过
571147
zhlzt楼主2023/8/14 10:59
#include<bits/stdc++.h>
using namespace std;
const int N=100010; int h[N];
int main(){ int n;
	while(~scanf("%d",&n),n){
		for(int i=1;i<=n;i++) scanf("%d",&h[i]);
		stack<int>st; long long ans=0; h[n+1]=0;
		for(int i=1;i<=n+1;st.push(i++)){
			while(!st.empty()&&h[st.top()]>=h[i]){
				int pos=st.top(); st.pop();
				int len=!st.empty()?i-st.top():i;
				ans=max(ans,1ll*len*h[pos]);
			}
		} printf("%lld\n",ans);
	}
	return 0;
}
2023/8/14 10:59
加载中...