public static void Main()
int[] nums = new int[]{5, 2, 1, 6, 3, 8};
PrefixSum prefixSum = new PrefixSum(nums);
Console.WriteLine("Prefix sum of elements up to index 3: " + prefixSum.GetSum(3));
Console.WriteLine("Sum of elements from index 1 to index 3: " + prefixSum.GetRangeSum(1, 3));
private static int[] _prefixSum;
public PrefixSum(int[] nums)
_prefixSum = new int[nums.Length + 1];
for(int i =1; i <= n; i++)
_prefixSum[i] = _prefixSum[i-1] + nums[i-1];
if (i < 0 || i >= _prefixSum.Length)
throw new ArgumentOutOfRangeException(i.ToString());
public int GetRangeSum(int i, int j)
if (i < 0 || j >= _prefixSum.Length || i > j)
throw new ArgumentOutOfRangeException();
return _prefixSum[j + 1] - _prefixSum[i];