NC50965 单调栈 求最大的矩形面积

题目:
NC50965 单调栈 求最大的矩形面积

样例都对,交上去通过0%
```c++
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 给定一个后缀表达式,返回它的结果
     * @param str string字符串 
     * @return long长整型
     */
    long long legalExp(string str) 
    {
    stack <long long int> q;
    string s=str;
    string s2=" ";
    long long int p,n,ans=0;
    for(long long int i=0;i<s.length();i++)
    {
//         cout<<"s[i]="<<s[i]<<endl;
        if(s[i]=='#' && s[i]!='+' && s[i]!='-' && s[i]!='*')
        {
            q.push(ans);
            ans=0;
        }
        else if(s[i] <="9" && s[i] >= "0")//!='#' && s[i]!='+' && s[i]!='-' && s[i]!='*')
        {
            ans=ans*10+s[i]-'0';
//                cout<<"i="<<i<<" "<<"ans="<<ans<<endl;
        }
        else if(s[i]=='+')
        {
            long long int first=q.top();
            q.pop();
            long long int second=q.top();
            q.pop();
//            cout<<first<<" "<<second<<" "<<"first+second="<<first+second<<endl;
            q.push(first+second);
            
        }
        else if(s[i]=='-')
        {
            long long int first=q.top();
            q.pop();
            long long int second=q.top();
            q.pop();
//            cout<<"first-second="<<first-second<<endl;
            q.push(first-second);
        }
        
        else if(s[i]=='*')
        {
            long long int first=q.top();
            q.pop();
            long long int second=q.top();
            q.pop();
//            cout<<"first*second="<<first*second<<endl;
            q.push(first*second);
        }
    }
    return q.top();
    }
};

```

题干发一下

大致题意:给定从左到右多个矩形,已知这此矩形的宽度都为1,长度不完全相等。这些矩形相连排成一排,求在这些矩形包括的范围内能得到的面积最大的矩形,打印出该面积。所求矩形可以横跨多个矩形,但不能超出原有矩形所确定的范围
因为原题是英文版的,所以就翻译成中文了

测试输入
7 2 1 4 5 1 3 3
4 1000 1000 1000 1000
0

测试输出
8
4000