Арифметикалық айырмаларды сұрау
Ұзындығы \(n\) \(a_1, a_2, \dots, a_n\) жиымы берілген, мұнда \(1 \le n \le 10^5\).
\(q\) сұрауларын өңдеу қажет, мұнда \(1 \le q \le 10^5\), әр сұрау екі типте:
Тип 1. 1 l r — тексеру.
\(a_l, a_{l+1}, \dots, a_r\) (\(1 \le l \le r \le n\)) бөлігін ұзындығы \(m = r - l + 1\) мультижиын ретінде қарастырыңыз.Осы бөліктің элементтерін кез келген тәртіпте орналастыруға болады, жаңа тізбек \(b_1, b_2, \dots, b_m\) алынады.
Содан кейін \(d_i = b_{i+1} - b_i\) айырмалары барлық \(i\) үшін \(1\)-ден \(m - 1\)-ге дейін есептеледі.
Сұрау сәтті деп есептеледі, егер \(d_1, d_2, \dots, d_{m-1}\) тізбегі арифметикалық прогрессияны құратын тәртіпті табуға болады. Яғни, \(d_{i+1} - d_i = d_2 - d_1\) барлық \(i\) үшін \(1\)-ден \(m - 2\)-ге дейін.
Егер мұндай тәртіп болса, жауап ретінде Yes шығарыңыз, әйтпесе No.
Тип 2. 2 idx val — жаңарту.
\(a_{\mathrm{idx}} = \mathrm{val}\) мәнін тағайындау, мұнда \(1 \le \mathrm{idx} \le n\), \(1 \le \mathrm{val} \le 10^9\).
Бірінші типтегі әр сұрау үшін жауапты келу тәртібімен шығарыңыз.
Енгізу
Бірінші жолда екі бүтін сан \(n\) және \(q\) (\(1 \le n, q \le 10^5\)) — жиымның ұзындығы және сұраулар саны.
Екінші жолда \(n\) бүтін сан \(a_1,\dots,a_n\) (\(1 \le a_i \le 10^9\)) — бастапқы жиым.
Келесі \(q\) жолдың әрқайсысы жоғарыда көрсетілген форматтардың бірінде бір сұрауды сипаттайды.
Шығару
Типі 1 сұрау үшін әрқайсысына «Yes» немесе «No» (регистр маңызды емес) жеке жолда шығарыңыз.
Мысалдар
Енгізу 1
5 6
4 10 10 28 28
1 1 5
1 2 4
2 3 12
1 1 5
2 5 30
1 1 5
Жауап 1
YES
YES
NO
NO
Енгізу 2
4 1
135 162 66 185
1 1 4
Жауап 2
YES
Пікірлер