Vị trí cấm

Đề bài

Mô tả

Cho một xâu s gồm n chữ cái Latin thường. Một số vị trí trong xâu được đánh dấu là cấm.

Ta muốn tìm một xâu a sao cho giá trị |a|·f(a) là lớn nhất có thể, trong đó:

  • |a| là độ dài của xâu a.
  • f(a) là số lần xuất hiện của a trong s mà vị trí kết thúc của lần xuất hiện đó không phải là vị trí cấm.

Ví dụ, nếu s= aaaa, a= aa và vị trí 3 bị cấm, thì f(a)=2: có ba lần xuất hiện của a trong s (bắt đầu tại các vị trí 1, 2, 3), nhưng một trong số đó (bắt đầu tại vị trí 2) kết thúc tại vị trí cấm 3 nên không được tính.

Hãy tính giá trị |a|·f(a) lớn nhất có thể.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: độ dài của xâu s.
  • Dòng thứ hai chứa xâu s gồm n chữ cái Latin thường.
  • Dòng thứ ba chứa xâu t gồm n ký tự 0 và 1. Nếu ký tự thứ i của t là 1 thì vị trí i bị cấm, ngược lại thì không.

Dữ liệu ra

In ra một số nguyên: giá trị |a|·f(a) lớn nhất có thể.

Ràng buộc

  • 1n200000.
  • Các vị trí được đánh số từ 1 đến n.

Ví dụ

Input Output Giải thích
5
ababa
00100
5 Vị trí 3 bị cấm. Chọn a= ababa (độ dài 5): xuất hiện đúng 1 lần, kết thúc tại vị trí 5 (không cấm), giá trị 5·1=5. Nếu chọn a= aba thì một trong hai lần xuất hiện kết thúc tại vị trí cấm 3, chỉ còn f=1, giá trị 3. Đáp án là 5.
5
ababa
00000
6 Không có vị trí cấm. Chọn a= aba: xuất hiện 2 lần, giá trị 3·2=6.
5
ababa
11111
0 Mọi vị trí đều bị cấm nên mọi lần xuất hiện đều bị loại, f(a)=0 với mọi a.

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0