Time limit: 0.9s
Memory limit: 128MB
Input:
Output:
Se dă un șir a cu N elemente, numerotate de la 1 la N. Se vor efectua M operații asupra șirului:
+xyz- Se adunăzla elementele din intervalul[x y]=xyz- Elementele din intervalul[x y]devin egale cuzRxy- Elementele din intervalul[x y]se inversează (a[x]devinea[y],a[x+1]devinea[y-1], ... ,a[y]devinea[x])Dx- Elementul de pe pozițiaxse șterge,a[1...n]devinea[1...x-1] ∪ a[x+1...n]Ixz- Se adaugă elementulzpe pozițiax,a[1...n]devinea[1...x-1] ∪ z ∪ a[x...n]Qxy- Se cere suma elementelor din intervalul[x y]
Să se răspundă tuturor interogărilor de tip Q iar la finalul interogărilor să se printeze șirul a.
Date de intrare
Pe prima linie se citesc N și M. Pe a doua linie se citesc N numere, elementele lui a. Pe următoarele M linii se citesc interogările, după formatul de mai sus.
Date de ieșire
Se va afișa pe câte o linie răspunsul interogărilor Q. Se va afișa pe ultima linie șirul final a, separat prin spații.
Restricții și precizări
1 ≤ N ≤ 100 0001 ≤ M ≤ 200 000- Se vor citi doar numere nenule și rezultatul unei interogări va fi .
- Se garantează că operațiile se vor face pe elemente ale lui
acare există în acel moment. - Se garantează că
anu va avea mai mult deNelemente în orice moment.
Exemplu
stdin
5 11
1 2 3 4 5
Q 2 4
+ 1 3 1
Q 2 4
= 4 5 1
Q 2 4
R 1 3
Q 2 4
D 2
Q 2 4
I 3 5
Q 2 4
stdout
9
11
8
6
4
8
4 2 5 1 1