Trò Chơi Xóa Chữ

Đề bài

Mô tả

Cho hai xâu chỉ gồm các chữ cái Latin thường: xâu t và xâu p. Đảm bảo rằng p có thể nhận được từ t bằng cách xóa đi một số chữ cái (nói cách khác, p là một dãy con của t).

Người ta xóa các chữ cái của t lần lượt từng cái một, theo đúng thứ tự cho bởi một hoán vị a1,a2,,a|t| của các chỉ số: ở bước thứ i chữ cái ở vị trí ai (tính theo t ban đầu) bị xóa. Sau khi xóa một chữ cái, chỉ số của các chữ cái còn lại không thay đổi.

Quá trình xóa có thể bị dừng lại tại một thời điểm bất kỳ. Hãy xác định số lượng chữ cái nhiều nhất có thể xóa theo thứ tự trên sao cho xâu p vẫn còn là dãy con của phần còn lại của t.

Dữ liệu vào

  • Dòng thứ nhất chứa xâu t.
  • Dòng thứ hai chứa xâu p.
  • Dòng thứ ba chứa |t| số nguyên a1,a2,,a|t| — một hoán vị của các chỉ số 1,2,,|t|, là thứ tự xóa các chữ cái của t.

Dữ liệu ra

  • In ra một số nguyên duy nhất: số chữ cái nhiều nhất có thể xóa.

Ràng buộc

  • 1|p|<|t|200000.
  • tp chỉ gồm các chữ cái Latin thường.
  • 1ai|t|, tất cả ai đôi một khác nhau.
  • Đảm bảo p là dãy con của t.

Ví dụ

Input Output Giải thích
ababcba
abb
5 3 4 1 7 6 2
3 Sau khi xóa 3 chữ cái ở các vị trí 5,3,4, xâu còn lại vẫn chứa abb là dãy con. Nếu xóa thêm chữ cái ở vị trí 1 thì không còn nhận được abb nữa, nên đáp án là 3.
bbbabb
bb
1 6 3 4 2 5
4 Xóa 4 chữ cái đầu theo thứ tự (vị trí 1,6,3,4), phần còn lại vẫn chứa bb. Xóa thêm là mất, nên đáp án là 4.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0