#include<iostream>
#include<stack>
using namespace std;
void largestAreaUnderHistogram(int arr[], int n){
    stack<int>s;
    int area,ans[100],st;
for(int i=0;i<n;i++){
    int curElement = arr[i];
    if(s.empty()||arr[s.top()]<curElement){
        s.push(i);
    }
    else{
       st=s.top();
       s.pop();
    //comping areas
        if(s.empty()){
          area = arr[i]*i;
        }
        else{
            area=arr[i]*(st-i+1);
        }
    }

    while(s.empty()==false){
        st=s.top();
        s.pop();
    //comping areas
        if(s.empty()){
          area = arr[i]*i;
        }
        else{
            area=arr[i]*(st-i+1);
        }
    }
    ans[i] = area;
}
int Max=0;
for(int i=0;i<n;i++){
    cout<<ans[i]<<" ";
    Max=max(Max,ans[i]);
}
cout<<"maxArea"<<Max;
}

int main(){
int arr[] = {6,2,5,4,5,1,6};
int n= sizeof(arr)/sizeof(int);
largestAreaUnderHistogram(arr,n);
return 0;}
