class Solution {
public:
bool confine = false, begin = false;
int longestMountain(vector<int>& A)
{
if (A.size()<3)
{
return 0;
}
vector<int>num = A;
int ans = 0, left = 0, len = 0;
for (int right = 0; right < num.size()-1; right++)
{
if (!begin)
{
if (num[right] < num[right + 1])
{
len++;
left = right;
begin = true;
}
}
else
{
if (!confine)
{
if (num[right] > num[right + 1])
{
confine = true;
}
else if (num[right] == num[right + 1])
begin = 0;
}
else
{
if (num[right] <= num[right + 1])
{
confine = 0;
begin = 0;
ans = max(ans, right - left + 1);
right--;
}
}
}
}
if (begin&&confine)
{
ans = max(ans, (int)num.size() - left);
}
return ans;
}
};