stack histogram geeks code example
Example: stack histogram geeks
using namespace std;
const ll maxn=1e6+7 , mod=1e9+7;
int h[maxn];
stack<int> st;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>h[i];
}
int mx=0,mxt;
int i=0;
int bal;
while(i<n){
if(st.empty()==1 or h[st.top()]<=h[i]){
st.push(i);
i++;
}
else{
bal=st.top();
st.pop();
if(!st.empty()) mxt=h[bal]*(i-st.top()-1);
else mxt=h[bal]*i;
mx=max(mxt,mx);
}
}
i=n;
while(st.empty()==0){
bal=st.top();
st.pop();
if(!st.empty()) mxt=h[bal]*(i-st.top()-1);
else mxt=h[bal]*i;
mx=max(mx,mxt);
}
cout<<mx;
}