int[] prefixSums(int[] values) {
int[] prefix = new int[values.length + 1];
for (int i = 0; i < values.length; i++) {
prefix[i + 1] = prefix[i] + values[i];
}
return prefix;
}
int rangeSum(int[] prefix, int left, int right) {
return prefix[right] - prefix[left];
}
def prefix_sums(values: list[int]) -> list[int]:
prefix = [0]
for value in values:
prefix.append(prefix[-1] + value)
return prefix
def range_sum(prefix: list[int], left: int, right: int) -> int:
return prefix[right] - prefix[left]
def prefixSums(values: Array[Int]): Array[Int] =
val prefix = Array.fill(values.length + 1)(0)
for i <- values.indices do prefix(i + 1) = prefix(i) + values(i)
prefix
def rangeSum(prefix: Array[Int], left: Int, right: Int): Int =
prefix(right) - prefix(left)
std::vector<int> prefixSums(const std::vector<int>& values) {
std::vector<int> prefix(values.size() + 1);
for (int i = 0; i < values.size(); i++) {
prefix[i + 1] = prefix[i] + values[i];
}
return prefix;
}
int rangeSum(const std::vector<int>& prefix, int left, int right) {
return prefix[right] - prefix[left];
}