Cho xâu kí tự \(S\) có \(n\) kí tự chữ cái Latin viết in hoa \(\texttt{A}\ldots\texttt{Z}\). Có \(q\) lệnh xóa kí tự, mỗi lệnh xóa thuộc một trong \(2\) loại sau đây:
-
Loại \(0\): Xóa \(1\) kí tự đầu tiên (tính từ trái qua phải) có thứ tự từ điển nhỏ nhất của xâu còn lại.
-
Loại \(1\): Xóa \(1\) kí tự đầu tiên (tính từ trái qua phải) có thứ tự từ điển lớn nhất của xâu còn lại.
Yêu cầu: Tìm xâu kí tự còn lại sau khi thực hiện tuần tự \(q\) lệnh xóa.
Input
Dữ liệu vào:có thông tin sau:
-
Dòng đầu tiên có \(2\) số nguyên dương \(n, q\) (\(q \le n \le 2 \times 10^5\); \(q \le 10^5\));
-
Dòng thứ hai là xâu \(S\) chỉ có kí tự chữ cái Latin viết in hoa \(\texttt{A}\ldots\texttt{Z}\);
-
Dòng thứ ba có \(q\) số, mỗi số là \(0\) hoặc số \(1\) tương ứng thể hiện loại lệnh xóa.
Các số trên cùng một dòng trong dữ liệu được viết cách nhau bởi dấu cách trống.
Ràng buộc:
-
Subtask 1 (\(10\%\) số điểm): Dữ liệu vào có \(q = 1\).
-
Subtask 2 (\(40\%\) số điểm): Dữ liệu vào có \(n \le 10^4\); \(q \le 10^3\).
-
Subtask 3 (\(50\%\) số điểm): Không có ràng buộc nào thêm.
Output
In ra kết quả xâu kí tự còn lại sau khi thực hiện tuần tự \(q\) lệnh xóa.
Example
Input:
10 4
ADBAACDABC
0 1 1 0
Output:
BACABC
Note
Các lần xóa lần lượt là:
-
Lần 1 (loại \(0\)): \(\texttt{ADBAACDABC} \to \texttt{DBAACDABC}\);
-
Lần 2 (loại \(1\)): \(\texttt{DBAACDABC} \to \texttt{BAACDABC}\);
-
Lần 3 (loại \(1\)): \(\texttt{BAACDABC} \to \texttt{BAACABC}\);
-
Lần 4 (loại \(0\)): \(\texttt{BAACABC} \to \texttt{BACABC}\).
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.