vector<int>left;
stack<pair<int,int>>s;
int pseudo_index=-1;
for(int i=0;i<n;i++)
{
if(s.size()==0)
{
left.push_back(pseudo_index);
}
else if(s.size()>0 && s.top().first<arr[i])
{
left.push_back(s.top());
}
else if(s.size()>0 && s.top().first>=arr[i])
{
while(s.size()>0 && s.top().fisrt>=arr[i])
{
s.pop();
}
if(s.size()==0)
left.push_back(s.top().second);
}
s.push(arr[i];)
}
return left; //NSL completed
vector<int>right; //NSR doing
stack<pair<int,int>>s2;
int pseudo_index=7;
for(int i=size-1;i>=0;i--)
{
if(s2.size()==0)
{
right.push_back(pseudo_index);
}
else if(s2.size()>0 && s2.top().first<arr[i])
{
right.push_back(s.top());
}
else if(s2.size()>0 && s2.top().first>=arr[i])
{
while(s2.size()>0 && s2.top().fisrt>=arr[i])
{
s2.pop();
}
if(s2.size()==0)
right.push_back(s2.top().second);
}
s2.push(arr[i];)
}
reverse (right.begin(),right.end());
return right; //NSR completed
for(int i=0;i<size;i++)
{
width[i]=right[i]-left[i]-1;
}
for(int i=0;i<size;i++){
area[i]=arr[i]*width[i];
}
return max of area[i]; //final answer