11522. Обмін


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

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

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

Маємо рядок \(S\) довжиною \(2N\).

Вам надаються \(Q\) запитів на цьому рядку. У \(i\)-му запиті дані три цілих числа \(T_i\), \(A_i\), і \(B_i\), виконайте наступне:

  • якщо \(T_i = 1\): поміняти місцями \(A_i\)-й і \(B_i\)-й символи \(S\);

  • якщо \(T_i = 2\): поміняйте місцями перші \(N\) символів і останні \(N\) символів \(S\) (значення \(A_i\) і \(B_i\) не використовуються). Наприклад, якщо \(S\) є \(FLIP\), цей запит робить його \(IPFL\).

Виведіть рядок \(S\) після обробки всіх запитів \(Q\) у тому порядку, як вони задаються.

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

Перший рядок містить ціле число \(N\) (\(1 \le N \le 2 \times 10^5\))

Другий рядок містить \(S\) (\(|S|=2N\), \(S\) = ['A'..'Z'])

Третій рядок містить ціле число \(Q\) (\(1 \le S \le 3 \times 10^5\))

Наступні  \(Q\) рядків містять цілі числа \(T_i, A_i, B_i\) (\(if T_i=1: 1 \le A_i < B_i \le 2N\), \(if T_i=2: A_i = B_i = 0\), \(T_i = 1,2\) )

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

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

Примітка

До прикладу 1:

1-й запит міняє місцями перші N символи та останні N символів S, отримаємо IPFL.

2-й запит міняє місцями 1-й і 4-й символи S, отримаємо LPFI.

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

2
FLIP
2
2 0 0
1 1 4

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

LPFI

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

2
FLIP
6
1 1 3
2 0 0
1 1 2
1 2 3
2 0 0
1 1 4

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

ILPF

Коментарі

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