== include(page="template/taskheader" task_id="dicearray") ==
Gimi şi Victor, doi tovaraşi buni, într-o după-amiză de vară s-au hotărât să joace barbut.
Jocul de barbut constă in aruncarea a $N$ zaruri si astfel obţinerea unui şir $Z$ de $N$ zaruri. Scorul se obţine prin însumarea punctelor de pe faţa de deasupra a celor $N$ zaruri.
Gimi şi Victor, doi tovăraşi buni, într-o după-amiză de vară s-au hotărât să joace barbut. Jocul de barbut constă în aruncarea a $N$ zaruri şi astfel obţinerea unui şir $Z$ de $N$ zaruri. Scorul unei aruncări se obţine prin însumarea punctelor de pe faţa de deasupra a celor $N$ zaruri.
Toate zarurile au următoarea desfăşurare plană:
!problema/dicearray?die_layout.png!
Întrucât suma valorilor de pe două feţe opuse ale unui zar este mereu $7$, un zar poate fi descris printr-un triplet (top, front, left), unde:
# top reprezinta valoarea de pe fata de deasupra zarului
# front reprezinta valoarea de pe fata din fata zarului
# left reprezinta valoarea de pe fata din stanga zarului
Întrucât suma valorilor de pe două feţe opuse ale unui zar este mereu $7$, un zar poate fi descris printr-un triplet $(top, front, left)$, unde:
De exemplu, zarul (6, 3, 5) arată astfel.
**Insert (6, 3, 5) imagine**
* $top$ reprezintă valoarea de pe faţa de deasupra zarului (perpendiculară pe axa $oY$)
* $front$ reprezintă valoarea de pe faţa din faţa zarului (perpendiculară pe axa $oX$)
* $left$ reprezintă valoarea de pe faţa din stânga zarului (perpendiculară pe axa $oZ$)
Când Gimi aruncă cu zarurile îi zice lui Victor:
De exemplu, zarul $(6, 2, 3)$ arată astfel:
!problema/dicearray?623.png!
"Scoate mă si tu o ţigară până dau eu cu zarurile astea".
Când Gimi aruncă cu zarurile îi zice lui Victor: _"Scoate mă şi tu o acadea până dau eu cu zarurile astea."_
Cât timp Victor este distras, Gimi are timp să trişeze şi să efectueze Q operaţii asupra şirului de zaruri In următorul fel.
Cât timp Victor este distras, Gimi are timp să trişeze prin efectuarea a Q operaţii asupra şirului de zaruri. O operaţie poate fi descrisă printr-un triplet $(l, r, d)$ astfel:
O operaţie poate fi descrisă printr-o pereche (l, r, d):
* toate zarurile $Z[i]$ cu $i$ de la $l$ la $r$ se rotesc în sens trigonometric (invers acelor de ceasornic) cu $90^o^$ de grade pe axa $d ∈ {'x', 'y', 'z'}$, privind dinspre sensul pozitiv al axelor. De exemplu, zarul $(6, 2, 3)$ după o rotire pe axa $'x'$ devine zarul $(4, 2, 6)$, după o rotire pe axa $'y'$ devine $(6, 3, 5)$, şi după o rotire pe axa $'z'$ devine $(2, 1, 3)$.
Toate zarurile Z_i cu i de la l la r se rotesc cu 90 de grade pe axa d (unde d poate fi x, y sau z).
**Insert image cu axele si fetele**
Gimi vrea să afle care este scorul pe care l-a obţinut după ce a trişat făcând cele Q operaţii.
Gimi vrea să afle care este scorul pe care l-a obţinut după ce a aplicat cele Q operaţii asupra şirului.
h2. Date de intrare
Fişierul de intrare $dicearray.in$ ...
Fişierul de intrare $dicearray.in$ va conţine pe prima linie două numere naturale $N$ şi $Q$, reprezentând numărul de zaruri şi numărul de operaţii.
Pe următoarele $N$ linii se vor afla câte trei numere $(top, front, left)$ ce descriu cele $N$ zaruri.
Pe următoarele $Q$ linii se se vor află două numere $(l, r)$ şi un caracter $d ∈ {'x', 'y', 'z'}$ reprezentând operaţiile făcute asupra şirului de zaruri.
h2. Date de ieşire
În fişierul de ieşire $dicearray.out$ ...
În fişierul de ieşire $dicearray.out$ se va afla un singur număr $S$, reprezentând scorul pe care l-a obţinut Gimi după ce a evectuat cele $Q$ operaţii.
h2. Restricţii
* $... ≤ ... ≤ ...$
* $1 ≤ N, Q ≤ 70 000$
* Pentru teste în valoare de 20 de puncte: $1 ≤ N, Q ≤ 1 000$ şi singurul tip de rotaţie va fi cel în jurul axei Ox
* Pentru teste în valoare de 30 de puncte: $1 ≤ N, Q ≤ 1 000$
* Pentru teste în valoare de 20 de puncte: $1 ≤ N, Q ≤ 70 000$ şi singurul tip de rotaţie va fi cel în jurul axei Ox
* Pentru teste în valoare de 30 de puncte: $1 ≤ N, Q ≤ 70 000$
* **Atenţie!** Toate operaţiile făcute de Gimi trebuie efectuate în ordinea datelor de intrare.
h2. Exemplu
table(example). |_. dicearray.in |_. dicearray.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| 3 3
6 2 3
6 2 3
6 2 3
1 1 x
2 2 y
3 3 z
| 12
|
| 6 3
1 2 4
5 6 3
4 5 1
6 4 2
3 2 1
3 1 5
4 5 y
3 4 z
3 4 x
| 22
|
| 12 5
2 6 4
5 3 1
3 2 1
2 6 4
4 2 6
5 3 1
4 6 5
2 4 1
5 4 6
6 3 5
2 3 6
2 4 1
2 4 z
7 11 z
6 8 x
2 2 x
1 1 z
| 50
|
h3. Explicaţie
...
Pentru primul exemplu, după rotiri zarurile vor fi $(4, 2, 6), (6, 3, 5), (2, 1, 3)$. Răspunsul este $4 + 6 + 2 = 12$.
== include(page="template/taskfooter" task_id="dicearray") ==