• + 0 comments
    java
        public static void main(String[] args) {
            /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
            Scanner sc = new Scanner(System.in);
            
            int N = sc.nextInt();
            int[] arr = new int[N];
            
            for (int i = 0; i < N; i++) {
                arr[i] = sc.nextInt();
            }
            
            int countOfNegativeSubArrays = 0;
            int ptr1 = 0;
            int ptr2 = 0;
            
            int sw = Arrays.copyOfRange(arr, ptr1, ptr2+1).length; // default sliding-w width of 1
            while(sw <= arr.length) {
                for (int i = 0; i < arr.length && ptr2+i+1 <= arr.length; i++) {
                    // sliding through the array.
                    int[] subArr = Arrays.copyOfRange(arr, ptr1+i, ptr2+i+1);
                    
                    /**
                        debugging:
                        
                        System.out.printf("from %d to %d\n", ptr1+i, ptr2+i);
                        System.out.println(Arrays.toString(subArr));
                        System.out.println("--------------");
                    */
                    
                    int sum = Arrays.stream(subArr).sum();
                    if(sum < 0) {
                        countOfNegativeSubArrays++;
                    }
                    // 0 : 0
                    // 1 : 1
                    // 2 : 2
                    
                    // 0 : 1
                    // 1 : 2
                    
                }
                // Update the sliding-window width
                sw = Arrays.copyOfRange(arr, ptr1, ++ptr2).length+1;
            }
            
            
            System.out.println(countOfNegativeSubArrays);
        }