Bob là một cư dân nổi tiếng của vương quốc Seesawia, một nơi huyền bí nơi mọi vật thể hoạt động dựa trên nguyên lý cân bằng tuyệt đối. Bob rất thích chơi bập bênh, và từ những ngày thơ ấu của mình, cậu đã có một niềm đam mê mãnh liệt với những chiếc bập bênh cân bằng. Mỗi ngày, Bob lại dành hàng giờ trên chiếc bập bênh kỳ diệu của mình, nghiên cứu cách làm thế nào để giữ cho nó không nghiêng về bất kỳ phía nào, luôn giữ trạng thái hoàn hảo giữa trái và phải.
Vào một ngày nọ, sau khi chơi xong, Bob đã nảy ra một bài toán liên quan đến mảng bập bênh cân bằng - một cấu trúc đặc biệt mà cậu tin rằng sẽ đóng vai trò quan trọng trong việc duy trì hòa bình và sự ổn định cho toàn vương quốc Seesawia. Cụ thể, Bob định nghĩa một mảng \(A = [a_1, a_2, \dots, a_m]\) là một mảng bập bênh cân bằng nếu như tồn tại một vị trí \(k\) giữa mảng (\(1 \leq k \leq m\)) sao cho:
\begincenter
$
\sum_{i=1}^{m} (i - k) a_i = 0
$
\endcenter
Điều này có nghĩa là nếu mỗi phần tử \(a_i\) của mảng được coi là một vật nặng đặt trên một chiếc bập bênh ở vị trí \(i\), thì sẽ có một điểm \(k\) mà tại đó bập bênh không bị nghiêng về phía trái hay phải.
Như một món quà sinh nhật, Bob đã nhận được một mảng \(A = [a_1, a_2, \dots, a_n]\) từ người bạn thân của mình, một thợ thủ công nổi tiếng trong vương quốc. Tuy nhiên, mảng này không cố định: nó có thể thay đổi theo thời gian khi có các yếu tố tác động từ môi trường. Bob muốn biết liệu có một đoạn con nào của mảng mà vẫn giữ được trạng thái cân bằng này sau những thay đổi đó không.
Bob đã phát hiện ra rằng các phần tử trong mảng có thể thay đổi theo thời gian thông qua ba loại phép biến đổi sau, và đây là lúc bạn cần giúp đỡ Bob:
- Loại 1 \(\ell\) r x: Trong một ngày nắng đẹp, Bob quyết định làm cho một đoạn con từ \(a_\ell\) đến \(a_r\) nặng hơn bằng cách thêm vào mỗi phần tử \(x\) đơn vị trọng lượng.
- Loại 2 \(\ell\) r x: Trong một cuộc hành trình đến đỉnh Seesaw, Bob đã khám phá ra một loại đá quý phép thuật. Với mỗi viên đá, Bob có thể làm thay đổi toàn bộ trọng lượng của một đoạn con từ \(a_\ell\) đến \(a_r\) thành một giá trị mới là \(x\).
- Loại 3 \(\ell\) r: Bob muốn kiểm tra xem liệu đoạn \([a_\ell, a_{\ell+1}, \dots, a_r]\) hiện tại có đang ở trạng thái cân bằng hay không. Nếu cân bằng, bạn hãy in ra "Yes", nếu không thì in ra "No".
Hành trình của Bob vẫn tiếp diễn khi cậu khám phá ra vô số cách thay đổi và tương tác với mảng, và mỗi lần thay đổi đều đòi hỏi sự khéo léo và nhanh nhạy trong việc duy trì sự cân bằng của vương quốc. Bạn hãy giúp Bob bằng cách giải quyết các truy vấn này thật nhanh chóng và chính xác nhé
Input
Dòng đầu tiên chứa hai số nguyên \(n\) và \(q\). \(n\) là độ dài của mảng, và \(q\) là số lượng truy vấn.
Dòng thứ hai chứa \(n\) số nguyên \(a_i\) để biểu diễn mảng.
Mỗi truy vấn tiếp theo là một truy vấn được mô tả theo định dạng như sau:
1 $\ell$ r x: Tăng giá trị của đoạn \([a_\ell, a_{\ell+1}, \dots, a_r]\) thêm \(x\).2 $\ell$ r x: Thay toàn bộ giá trị của đoạn \([a_\ell, a_{\ell+1}, \dots, a_r]\) thành \(x\).3 $\ell$ r: Kiểm tra xem đoạn \([a_\ell, a_{\ell+1}, \dots, a_r]\) có cân bằng hay không.
Output
Đối với mỗi truy vấn loại 3, in ra "Yes" nếu đoạn \([a_\ell, a_{\ell+1}, \dots, a_r]\) là mảng bập bênh cân bằng, ngược lại in ra "No".
Example
Test 1
Input
3 6
1 2 3
3 1 1
3 1 3
1 1 1 2
3 1 3
2 2 2 0
3 2 3
Output
Yes
No
Yes
Yes
Scoring
Trong tất cả các test :
- \(1 \leq n \leq 100\,000\): Độ dài của mảng.
- \(1 \leq q \leq 1\,200\,000\): Số lượng truy vấn mà Bob phải xử lý.
- \(-1000 \leq a_i \leq 1000\): Giá trị ban đầu của mỗi phần tử trong mảng \(A\).
- \(-10\,000 \leq x \leq 10\,000\): Giá trị của \(x\) trong mỗi phép biến đổi.
- Sau mỗi phép biến đổi, bạn có thể giả định rằng \(|a_i| \leq 1.5 \times 10^9\).
- \(1 \leq \ell \leq r \leq n\): Chỉ số của các đoạn con trong mỗi truy vấn.
Subtask \(1\) với \(20\%\) số điểm có \(n, q <= 200\).
Subtask \(2\) với \(20\%\) số điểm có \(n, q <= 2000\).
Subtask \(3\) với \(20\%\) số điểm trong \(q\) truy vấn, không có truy vấn loại \(1\).
Subtask \(4\) với \(20\%\) số điểm trong \(q\) truy vấn, không có truy vấn loại \(2\).
Subtask \(5\) với \(20\%\) số điểm còn lại không có ràng buộc gì thêm.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.