int[] applyRangeUpdates(int size, int[][] updates) {
int[] diff = new int[size + 1];
for (int[] update : updates) {
diff[update[0]] += update[2];
diff[update[1] + 1] -= update[2];
}
int[] values = new int[size];
for (int i = 0, running = 0; i < size; i++) {
running += diff[i];
values[i] = running;
}
return values;
}
def apply_range_updates(size: int, updates: list[tuple[int, int, int]]) -> list[int]:
diff = [0] * (size + 1)
for left, right, delta in updates:
diff[left] += delta
diff[right + 1] -= delta
values, running = [0] * size, 0
for i in range(size):
running += diff[i]
values[i] = running
return values
def applyRangeUpdates(size: Int, updates: Array[Array[Int]]): Array[Int] =
val diff = Array.fill(size + 1)(0)
for update <- updates do
diff(update(0)) += update(2)
diff(update(1) + 1) -= update(2)
val values = Array.fill(size)(0)
var running = 0
for i <- 0 until size do
running += diff(i)
values(i) = running
values
std::vector<int> applyRangeUpdates(int size, const std::vector<std::array<int, 3>>& updates) {
std::vector<int> diff(size + 1);
for (auto [left, right, delta] : updates) {
diff[left] += delta;
diff[right + 1] -= delta;
}
std::vector<int> values(size);
for (int i = 0, running = 0; i < size; i++) {
running += diff[i];
values[i] = running;
}
return values;
}