12144. Заміна символів


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

Вам надається рядок \(S\) довжиною \(N\), що складається з великих і малих літер англійського алфавіту.

Виконаємо \(Q\) операцій над рядком \(S\). \(i\)-та операція \((1≤i≤Q)\) представлена кортежем \((t_i ,x_i ,c_i )\) з двох цілих чисел і одного символу, як показано нижче.

  • Якщо \(t_i ​ =1\), змініть \(x_i\)-й символ \(S\) на \(c_i\) ​.
  • Якщо \(t_i ​ =2\), перетворіть усі великі літери в \(S\) на малі (не використовуйте \(x_i ​,c_i\) ​ для цієї операції).
  • Якщо \(t_i ​ =3\), перетворіть усі малі літери в \(S\) на великі (не використовуйте \(x_i ​,c_i\) ​ для цієї операції).

Виведіть \(S\) після \(Q\) операцій.

Обмеження

  • \(1≤N≤5×10^5\)
  • \(S\) — це рядок довжиною \(N\), що складається з великих і малих літер англійського алфавіту.
  • \(1≤Q≤5×10^5\)
  • \(1≤t_i ≤3\) \((1≤i≤Q)\)
  • Якщо \(t_i ​ =1\), то \(1≤x_i ≤N\) \((1≤i≤Q)\).
  • \(c_i\) — велика або мала англійська літера.
  • Якщо \(t_i ​ \neq 1\), то \(x_i ​ =0\) і \(c i ​ = 'a'\).
  • \(N,Q,t_i ​,x_i\) ​ — цілі числа.

Формат вхідних даних

Перший рядок містить ціле число \(N\).

Другий рядок містить \(S\).

Наступний   рядок містить ціле число \(Q\).

Наступні  \(Q\) рядків містять \(t_i, x_i, c_i\).

Формат вихідних даних

У вихідний потік виведіть відповідь в один рядок.

Приклад вхідних даних

7
AtCoder
5
1 4 i
3 0 a
1 5 b
2 0 a
1 4 Y

Приклад вихідних даних

atcYber

Спочатку рядок S є AtCoder.

  • Перша операція змінює 4-й символ на i, змінюючи S на AtCider.
  • Друга операція перетворює всі малі літери на великі, змінюючи S на ATCIDER.
  • Третя операція змінює 5-й символ на b, змінюючи S на ATCIbER.
  • Четверта операція перетворює всі великі літери на малі, змінюючи S на atciber.
  • П'ята операція змінює 4-й символ на Y, змінюючи S на atcYber.

Після виконання операцій рядок S є atcYber, тому надрукуйте atcYber.

Приклад вхідних даних

35
TheQuickBrownFoxJumpsOverTheLazyDog
10
2 0 a
1 19 G
1 13 m
1 2 E
1 21 F
2 0 a
1 27 b
3 0 a
3 0 a
1 15 i

Приклад вихідних даних

TEEQUICKBROWMFiXJUGPFOVERTBELAZYDOG

Коментарі

Ще немає коментарів.