Bài toán
Cho mảng arr[m], giá trị n, và r truy vấn (start, end). Mỗi truy vấn cộng n vào arr[start..end]. In mảng sau mỗi truy vấn.
Ví dụ
arr = {1,2,3,4,5}, n=2
Query1: [0,3] → {3,4,5,6,5}
Query2: [1,2] → {3,6,7,6,5}
Thuật toán đơn giản
For each query:
For j = start to end: arr[j] += n
Print arr
Mã nguồn C
#include <stdio.h>
struct range { int start, end; };
void add_tomatrix(int arr[], struct range r[], int n, int size, int m) {
for(int i=0; i
Kết quả
Query 1: 5 6 10 1 10
Query 2: 5 8 12 3 10
Query 3: 5 8 12 5 12