trang chủ / bài tập / berhiero

Chữ tượng hình Berland

Đề bài

Mô tả

Polycarpus có hai bức tranh cổ, mỗi bức vẽ một vòng tròn gồm các chữ tượng hình. Trong mỗi vòng tròn, không có chữ tượng hình nào xuất hiện quá một lần (nhưng một chữ có thể xuất hiện ở cả hai vòng).

Để lưu vào máy tính, Polycarpus phải cắt mỗi vòng tròn tại một vị trí nào đó rồi viết các chữ tượng hình thành một hàng theo chiều kim đồng hồ. Hàng thu được từ vòng thứ nhất gọi là xâu a, từ vòng thứ hai gọi là xâu b.

Có nhiều cách cắt mỗi vòng tròn. Polycarpus muốn chọn cách cắt cả hai vòng sao cho độ dài lớn nhất của một xâu con liên tiếp (substring) của a đồng thời là dãy con (subsequence) của b đạt giá trị lớn nhất có thể.

Hãy giúp Polycarpus tìm độ dài lớn nhất đó. Mỗi chữ tượng hình được biểu diễn bằng một số nguyên từ 1 đến 106.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên lalb: số chữ tượng hình trên vòng tròn thứ nhất và thứ hai.
  • Dòng thứ hai chứa la số nguyên: các chữ tượng hình trên vòng thứ nhất, theo chiều kim đồng hồ, bắt đầu từ một chữ bất kỳ.
  • Dòng thứ ba chứa lb số nguyên: các chữ tượng hình trên vòng thứ hai, theo chiều kim đồng hồ, bắt đầu từ một chữ bất kỳ.

Dữ liệu ra

In ra một số nguyên duy nhất: độ dài lớn nhất của xâu con liên tiếp của a là dãy con của b khi cắt hai vòng tròn một cách tối ưu. Nếu không tồn tại xâu con nào như vậy với mọi cách cắt, in ra 0.

Ràng buộc

  • 1la,lb106
  • Mỗi chữ tượng hình là một số nguyên trong đoạn [1,106]
  • Trong mỗi vòng tròn, các chữ tượng hình đôi một khác nhau

Ví dụ

Input Output Giải thích
3 3
1 2 3
3 2 1
2 Cắt vòng thứ nhất thành a=(1,2,3) và vòng thứ hai thành b=(1,3,2): xâu con (1,2) của a là dãy con của b.
5 4
1 2 3 4 5
1 3 5 6
2 Cắt vòng thứ nhất thành a=(5,1,2,3,4) (xâu con (5,1) dùng cả hai phía của điểm cắt gốc) và b=(5,6,1,3): (5,1) là dãy con của b.
4 6
1 3 5 2
1 2 3 4 5 6
3 Xâu con (1,3,5) của a là dãy con của b=(1,2,3,4,5,6).

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