Fişierul intrare/ieşire:dicearray.in, dicearray.outSursăAlgoritmiada 2022, Runda 3
AutorTulba-Lecu GabrielAdăugată deGabiTulbaGabi Tulba-Lecu GabiTulba
Timp execuţie pe test0.4 secLimită de memorie262144 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Dice Array

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ă:

Î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 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)

De exemplu, zarul (6, 2, 3) arată astfel:

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 prin efectuarea a Q operaţii asupra şirului de zaruri. O operaţie poate fi descrisă printr-un triplet (l, r, d) astfel:

  • toate zarurile Z[i] cu i de la l la r se rotesc în sens trigonometric (invers acelor de ceasornic) cu 90o 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).

Gimi vrea să afle care este scorul pe care l-a obţinut după ce a aplicat cele Q operaţii asupra şirului.

Date de intrare

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.

Date de ieşire

Î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.

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.

Exemplu

dicearray.indicearray.out
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

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.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?