#5234. Truy vấn min trên mảng vòng (Mã bài: CIRCRMQ)

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một mảng vòng tròn a gồm n số nguyên. Bạn cần thực hiện m truy vấn. Mỗi truy vấn có thể là một trong hai loại:

  1. Cập nhật: inc l r v - Tăng mỗi phần tử trong đoạn [l, r] (theo chiều kim đồng hồ) lên một giá trị v . Nếu l > r , đoạn sẽ bao gồm các phần tử từ l đến n-1 và từ 0 đến r .
  2. Truy vấn: rmq l r - Tìm giá trị nhỏ nhất trong đoạn [l, r] (theo chiều kim đồng hồ). Tương tự, nếu l > r , đoạn sẽ là từ l đến n-1 và từ 0 đến r .

Các chỉ số của mảng là 0-based.

Dữ liệu:

  • Dòng đầu tiên chứa số nguyên n ( 1 \le n \le 200000 ).
  • Dòng thứ hai chứa n số nguyên ban đầu của mảng a (giá trị tuyệt đối không vượt quá 10^6 ).
  • Dòng thứ ba chứa số nguyên m ( 0 \le m \le 200000 ).
  • m dòng tiếp theo, mỗi dòng là một truy vấn.
    • Truy vấn cập nhật có dạng l r v, với 0 \le l, r < n và giá trị tuyệt đối của v không vượt quá 10^6 .
    • Truy vấn tìm min có dạng l r, với 0 \le l, r < n .

Kết quả: Với mỗi truy vấn rmq, in ra giá trị nhỏ nhất tìm được trên một dòng riêng.

Ví dụ:

Dữ liệu:

4
1 2 3 4
4
3 0 1
rmq 3 0
inc 0 1 -2
rmq 0 1

Kết quả:

1
-1