Cho xâu ký tự \(S\) gồm \(n\) ký tự in hoa từ A đến Z. Có \(q\) lệnh xóa, mỗi lệnh thuộc một trong hai loại sau:
- Loại \(0\): Xóa kí tự đầu tiên từ trái sang phải là chữ cái có thứ tự từ điển nhỏ nhất trong xâu hiện tại.
- Loại \(1\): Xóa kí tự đầu tiên từ trái sang phải là chữ cái có thứ tự từ điển lớn nhất trong xâu hiện tại.
Hãy in ra xâu còn lại sau khi thực hiện lần lượt \(q\) lệnh xóa.
Input
Dòng đầu chứa hai số nguyên dương \(n, q\).
Dòng thứ hai chứa xâu \(S\) (gồm đúng \(n\) ký tự, chỉ gồm các chữ cái in hoa).
Dòng thứ ba chứa \(q\) số, mỗi số là \(0\) hoặc \(1\), theo đúng thứ tự các lệnh xóa.
Output
In ra xâu còn lại sau khi thực hiện tất cả các lệnh.
Giới hạn
- \(1 \le n \le 2 \cdot 10^5\)
- \(1 \le q \le 10^5\)
Scoring
- Subtask 1 (10%): \(q = 1\).
- Subtask 2 (40%): \(n \le 10^4\), \(q \le 10^3\).
- Subtask 3 (50%): Không có ràng buộc gì thêm.
Input
10 4
ADBAACDABC
0 1 1 0
Output
BACABC
Notes
Trạng thái của xâu trước và qua các lần xóa
- ADBAACDABC
- DBAACDABC
- BAACDABC
- BAACABC
- BACABC
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.