Bài 4. Xóa xâu (HSG 9 Hải Phòng 2025-2026)

Xem PDF




Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho xâu kí tự \(S\)\(n\) kí tự chữ cái Latin viết in hoa A...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òng đầu tiên có \(2\) số nguyên dương \(n, q\) (\(n \le 2 \cdot 10^5\); \(q \le 10^5\)).
  • Dòng thứ hai là xâu kí tự \(S\) chỉ có kí tự chữ cái Latin viết in hoa A...Z.
  • Dòng thứ ba có \(q\) số, mỗi số là số \(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 file dữ liệu được viết cách nhau bởi dấu cách trống.

Output

  • Ghi ra xâu kí tự còn lại sau khi thực hiện tuần tự \(q\) lệnh xóa.

Example

Test 1

Input
10 4
ADBAACDABC
0 1 1 0
Output
BACABC
Note

Giải thích:

  • Lần \(1\): ADBAACDABC \(\to\) DBAACDABC
  • Lần \(2\): DBAACDABC \(\to\) BAACDABC
  • Lần \(3\): BAACDABC \(\to\) BAACABC
  • Lần \(4\): BAACABC \(\to\) BACABC

Scoring

  • 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.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.