public int CountRangeSum(int[] nums, int lower, int upper) { int cnt = 0; if (nums.Length > 0) { MultiSet rSet = new MultiSet(); rSet.Add(0); long sum = 0; for (int i = 0; i < nums.Length; i++) { sum += (long)nums[i]; cnt += rSet.Distance(sum - (long)upper, sum - (long)lower); rSet.Add(sum); } } return(cnt); }