PVHOI 4 - VI - PHAO CHUỐI

Xem PDF



Tác giả:
Dạng bài
Điểm: 3000 Thời gian: 3.5s Bộ nhớ: 512M Input: vi.inp Output: vi.out

Các bạn đã tham gia trại hè Tin học Miền Trung – Tây Nguyên tại Quy Nhơn vừa qua hẳn không thể quên Phao Chuối – trò chơi mạo hiểm thử thách sự không sợ sóng biển làm khiếp sợ vị giáo sư đáng kính của chúng ta. Nhưng nay GSPVH đã khôn lớn, trưởng thành, không còn là đứa con nít \(9475\) ngày tuổi hôm nào, nên GSPVH quyết định cùng các bạn học sinh Quảng Ngãi đi trải nghiệm phao chuối một lần nữa.

Chiếc phao chuối tại Lý Sơn lần này có \(n\) vị trí ngồi, các vị trí ngồi được đánh số từ \(1\) đến \(n\) theo thứ tự từ đầu tới đuôi: vị trí thứ \(1\) ở đầu chuối, vị trí thứ \(n\) ở đuôi chuối và với mọi \(1 \leq i \leq n − 1\), vị trí thứ \(i\) và thứ $i + 1% ở cạnh nhau.

Do đã tìm hiểu rất kỹ chiếc phao chuối trước chuyến đi, GSPVH nhận ra rằng, mỗi vị trí ngồi có một độ an toàn nhất định và không có hai vị trí ngồi nào có cùng độ an toàn. Nhờ đó, độ an toàn của \(n\) vị trí ngồi có thể được biểu diễn bởi một hoán vị \(p_{1}, p_{2}, \ldots, p_{n}\) của các số nguyên từ \(1\) đến \(n\). Vị trí ngồi thứ \(i\) an toàn hơn vị trí ngồi thứ \(j\) khi và chỉ khi \(p_{i} < p_{j}\); vị trí \(b\)\(p_{b} = 1\) là vị trí ngồi an toàn nhất, vị trí \(w\)\(p_{w} = n\) là vị trí kém an toàn nhất. Cũng vì rất am hiểu về phao chuối, GSPVH tìm ra vị trí ngồi ưa thích của mình là vị trí \(f\).

GSPVH dẫn theo \(n − 1\) bạn học sinh của trường chuyên Lê Khiết đi chơi phao chuối. Coi GSPVH là người số \(1\)\(n − 1\) bạn còn lại được đánh số từ \(2\) đến \(n\). Toàn bộ \(n\) người sẽ lần lượt bước lên phao chuối và ngồi vào một vị trí nào đó, quy trình chọn vị trí ngồi của nhóm người như sau:

  • Trước hết, toàn bộ \(n\) vị trí trên phao chuối đều trống.
  • Đầu tiên, GSPVH (người thứ \(1\)) ngồi vào vị trí ưa thích của mình là vị trí thứ \(f\).
  • Tiếp theo, lần lượt các bạn từ bạn thứ \(2\) đến bạn thứ \(n\) chọn cho mình một vị trí trên phao chuối để ngồi. Tất cả các bạn đều chọn vị trí ngồi theo chiến lược sau:
    • Mỗi bạn luôn ngồi vào một vị trí còn trống tại thời điểm đó.
    • Mỗi bạn luôn ngồi vào một vị trí bên cạnh một vị trí đã có người ngồi trước đó.
    • Mỗi bạn luôn ngồi vào vị trí an toàn nhất trong các vị trí thoả mãn hai điều kiện trên.

Có thể thấy, sau cú lật thuyền xưa kia, ngay cả những bạn sinh ra từ biển cũng còn rén, luôn chọn cho mình chỗ an toàn nhất và phải bên cạnh một người để có thể ôm chặt khi thuyền chao đảo. Lấy ví dụ, giả sử phao chuối có \(n = 7\) vị trí ngồi với dãy biểu diễn độ an toàn của các vị trí là \((7, 2, 5, 1, 4, 6, 3)\) và vị trí ưa thích của GSPVH là \(f = 3\). Khi đó, mọi người sẽ lựa chọn chỗ ngồi như sau:

  • Trước hết, toàn bộ n vị trí trên phao chuối đều trống: _ _ _ _ _ _ _
  • Đầu tiên, GSPVH (người thứ \(1\)) ngồi vào vị trí ưa thích \(f = 3\): _ _ 1 _ _ _ _
  • Bạn thứ \(2\) ngồi vào vị trí \(4\): _ _ 1 2 _ _ _
  • Bạn thứ \(3\) ngồi vào vị trí \(2\): _ 3 1 2 _ _ _
  • Bạn thứ \(4\) ngồi vào vị trí \(5\): _ 3 1 2 4 _ _
  • Bạn thứ \(5\) ngồi vào vị trí \(6\): _ 3 1 2 4 5 _
  • Bạn thứ \(6\) ngồi vào vị trí \(7\): _ 3 1 2 4 5 6
  • Bạn thứ \(7\) ngồi vào vị trí \(1\): 7 3 1 2 4 5 6

Tuy nhiên, cuộc sống không ngừng biến đổi đi lên, và phao chuối cũng ngày càng được cải tiến. Gần đây, GSPVH phát hiện nhiều công trình khoa học đã ra đời nhằm nâng cấp độ an toàn của các vị trí ngồi trên phao chuối. Mỗi công trình nghiên cứu được biểu diễn bởi hai con số \(k\)\(c\) \((1 \leq k, c \leq n)\) với ý nghĩa: vị trí ngồi thứ \(k\) được nâng cấp và giờ trở thành vị trí có độ an toàn thứ \(c\). Lưu ý rằng ở mọi thời điểm, sau mọi sự nâng cấp, độ an toàn của các vị trí ngồi luôn đôi một phân biệt. Cụ thể, giả sử \(p_{1}, p_{2}, \ldots, p_{n}\) là hoán vị biểu diễn độ an toàn của các vị trí ngồi trước sự nâng cấp, cách xác định hoán vị \(p'_{1}, p'_{2}, \ldots, p'_{n}\) biểu diễn độ an toàn của các vị trí ngồi sau sự nâng cấp như sau:

  • Đặt \(o = p_{k}\). Chú ý rằng, do vị trí ngồi thứ k được nâng cấp nên chắc chắn vị trí này có độ an toàn cao hơn trước. Vì vậy, dữ liệu vào luôn đảm bảo \(c < o\).

  • \(p'_{k} = c\)

  • Với mọi vị trí \(i\)\(1 \leq i \leq n\)\(c \leq p_{i} \leq o − 1\), ta có \(p'_{i} = p_{i} + 1\).
  • Với mọi vị trí \(i\)\(1 \leq i \leq n\)\(1 \leq p_{i} \leq c − 1\), ta có \(p'_{i} = p_{i}\).
  • Với mọi vị trí \(i\)\(1 \leq i \leq n\)\(o + 1 \leq p_{i} \leq n\), ta có \(p'_{i} = p_{i}\).

Việc có quá nhiều cải tiến khoa học về phao chuối khiến cho GSPVH rất khó quản lý độ an toàn của các vị trí ngồi, vì vậy GSPVH muốn nhờ bạn viết chương trình xử lý \(q\) sự kiện, mỗi sự kiện thuộc một trong hai dạng sau:

  • U \(k\) \(c\): Có công trình khoa học nâng cao độ an toàn của vị trí thứ \(k\) lên mức \(c\) (như định nghĩa ở trên)
  • G \(x\): Cho biết với độ an toàn của các vị trí như ở thời điểm hiện tại, ai sẽ ngồi vào vị trí thứ \(x\), biết rằng GSPVH cùng những học sinh đi cùng vẫn chọn chỗ ngồi theo chiến lược ở trên.

Các bạn hãy giúp GSPVH nhé.

Input

  • Dòng đầu tiên chứa số nguyên \(\theta\) là số thứ tự của subtask chứa test này.
  • Dòng thứ hai chứa ba số nguyên \(n, q\)\(f\) \((1 \leq f \leq n \leq 666^{2}, 1 \leq q \leq 777^{2})\) lần lượt là số vị trí ngồi trên phao chuối, số thao tác cần được xử lý và vị trí ưa thích của GSPVH.
  • Dòng thứ ba chứa \(n\) số nguyên \(v_{1}, v_{2}, \ldots, v_{n}\) \((1 \leq v_{i} \leq n)\) là một hoán vị của các số nguyên từ \(1\) đến \(n\) biểu diễn độ an toàn của \(n\) vị trí ngồi ở thời điểm ban đầu.
  • Trong \(q\) dòng cuối cùng, mỗi dòng mô tả một thao tác thuộc một trong hai dạng sau:
    • U \(k\) \(c\) \((1 \leq k, c \leq n)\) mô tả một sự cải tiến độ an toàn. Dữ liệu vào đảm bảo nếu \(p_{1}, p_{2}, \ldots, p_{n}\) là hoán vị biểu diễn độ an toàn của n vị trí trước thao tác này, \(c < p_{k}\).
    • G \(x\) \((1 \leq x \leq n)\) yêu cầu tìm người sẽ ngồi vào vị trí thứ \(x\).

Output

  • Với mỗi thao tác dạng G \(x\), in ra một số nguyên trên một dòng thể hiện kết quả.

Scoring

  • Subtask \(1\) (\(3\) điểm): \(n \leq 66^{2}\)\(q \leq 77^{2}\).
  • Subtask \(2\) (\(9\) điểm): Có tối đa \(66\) thao tác dạng U \(k\) \(c\).
  • Subtask \(3\) (\(13\) điểm): Mọi thao tác dạng U \(k\) \(c\) đều xuất hiện trước mọi thao tác dạng G \(x\).
  • Subtask \(4\) (\(13\) điểm): Mọi thao tác dạng U \(k\) \(c\) đều thoả mãn \(c \leq 11\).
  • Subtask \(5\) (\(12\) điểm): \(n \leq 222^{2}\).
  • Subtask \(6\) (\(10\) điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
1
7 15 3
7 2 5 1 4 6 3
G 1
G 2
G 3
G 4
G 5
G 6
G 7
U 1 4
G 1
G 2
G 4
U 5 2
G 5
G 6
G 7
Output
7
3
1
2
4
5
6
4
3
2
3
6
7
Note

Ban đầu, khi dãy biểu diễn độ an toàn của các vị trí là \((7, 2, 5, 1, 4, 6, 3)\), những người sẽ ngồi vào các vị trí là \((7, 3, 1, 2, 4, 5, 6)\) (ví dụ này đã trình bày ở trên).
Sau thao tác U \(1\) \(4\), dãy biểu diễn độ an toàn của các vị trí trở thành \((4, 2, 6, 1, 5, 7, 3)\), những người sẽ ngồi vào các vị trí là \((4, 3, 1, 2, 5, 6, 7)\).
Sau thao tác U \(5\) \(2\), dãy biểu diễn độ an toàn của các vị trí trở thành \((5, 3, 6, 1, 2, 7, 4)\), những người sẽ ngồi vào các vị trí là \((5, 4, 1, 2, 3, 6, 7)\).


Bình luận