<gouthampradhan>array_SubArraysWithBoundedMaximum_1.java
public int numSubarrayBoundedMax(int[] A, int L, int R) {
    int[] DP = new int[A.length];
    int v = -1;
    for (int i = A.length - 1; i >= 0; i--) {
      if (A[i] >= L && A[i] <= R) {
        if (v != -1) {
          DP[i] = v - i + 1;
        } else {
          DP[i] = 1;
          v = i;
        }
      } else if (A[i] < L) {
        if (v == -1) {
          v = i;
        }
        if (i + 1 < A.length) {
          if (A[i + 1] < L || (A[i + 1] >= L && A[i + 1] <= R)) {
            DP[i] = DP[i + 1];
          } else {
            DP[i] = 0;
          }
        }
      } else {
        v = -1;
      }
    }
    int sum = 0;
    for (int i = 0; i < DP.length; i++) {
      sum += DP[i];
    }
    return sum;
  }
public int sample_funcname ( int [ ] var_0 , int var_1 , int var_2 ) {
  int [ ] var_4 = new int [ var_0 . length ] ;
  int var_6 = - 1 ;
  for ( int var_7 = var_0 . length - 1 ;
  var_7 >= 0 ;
  var_7 -- ) {
    if ( var_0 [ var_7 ] >= var_1 && var_0 [ var_7 ] <= var_2 ) {
      if ( var_6 != - 1 ) {
        var_4 [ var_7 ] = var_6 - var_7 + 1 ;
      }
      else {
        var_4 [ var_7 ] = 1 ;
        var_6 = var_7 ;
      }
    }
    else if ( var_0 [ var_7 ] < var_1 ) {
      if ( var_6 == - 1 ) {
        var_6 = var_7 ;
      }
      if ( var_7 + 1 < var_0 . length ) {
        if ( var_0 [ var_7 + 1 ] < var_1 || ( var_0 [ var_7 + 1 ] >= var_1 && var_0 [ var_7 + 1 ] <= var_2 ) ) {
          var_4 [ var_7 ] = var_4 [ var_7 + 1 ] ;
        }
        else {
          var_4 [ var_7 ] = 0 ;
        }
      }
    }
    else {
      var_6 = - 1 ;
    }
  }
  int var_9 = 0 ;
  for ( int var_7 = 0 ;
  var_7 < var_4 . length ;
  var_7 ++ ) {
    var_9 += var_4 [ var_7 ] ;
  }
  return var_9 ;
}
