classSolution{public:intlargestRectangleArea(vector<int>& heights){
stack<int> st;
heights.insert(heights.begin(),0);
heights.push_back(0);
st.push(0);int result =0;for(int i =1; i < heights.size(); i++){while(heights[i]< heights[st.top()]){int mid = st.top();
st.pop();int w = i - st.top()-1;int h = heights[mid];
result =max(result, w * h);}
st.push(i);}return result;}};