import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型ArrayList 
     * @return int整型
     */
    public int findLongestSubArray (ArrayList<Integer> nums) {
        // write code here
        if (1 == nums.size()) {
            return nums.get(0) > 0 ? 1 : 0;
        }
        int res = 0;
        int[] dp = new int[nums.size()];
        dp[0] = nums.get(0) > 0 ? 1 : 0;
        for (int i = 1; i < nums.size(); i++) {
            if (nums.get(i) > 0) { // 如果当前位置是正数
                dp[i] = dp[i - 1] + 1;
            }
            else if (nums.get(i) < 0) { // 如果当前位置是负数
                if ((i - 1 - dp[i - 1]) >= 0 && nums.get(i - 1 - dp[i - 1]) < 0) {
                    dp[i] = dp[i - 1] + 2;
                    if ((i - 2 - dp[i - 1]) >= 0) {
                        dp[i] = dp[i] + dp[i - 2 - dp[i - 1]];
                    }
                }
            }
            res = Math.max(res, dp[i]);
        }
        return res;
    }
}