Find the longest subarray with sum equal to tar
var um = new Map ( ) ; um [ 0 ] = - 1 ; var left , right ; var cur = 0 , maxi = - 1 ; for ( i = 0 ; i < N ; i ++ ) { cur += A [ i ] ; if ( um . has ( cur - tar ) && i - um . get ( cur - tar ) > maxi ) { maxi = i - um . get ( cur - tar ) ; right = i ; left = um . get ( cur - tar ) ; } if ( ! um . has ( cur ) ) um . set ( cur , i ) ; }