Dãy con cách đều là hoán vị

Đề bài

Mô tả

Cho dãy số nguyên a gồm n phần tử a1,a2,…,an, dãy số nguyên b gồm m phần tử b1,b2,…,bm, và một số nguyên dương p.

Với mỗi vị trí q thoả mãn q≥1 và q+(m−1)·p≤n, ta lấy ra dãy con cách đều

aq, aq+p, aq+2p, …, aq+(m−1)p

gồm đúng m phần tử. Vị trí q được gọi là tốt nếu dãy con này có thể thu được từ dãy b bằng cách sắp xếp lại thứ tự các phần tử, nghĩa là hai dãy chứa cùng một đa tập giá trị (mỗi giá trị xuất hiện với số lần bằng nhau ở cả hai dãy).

Hãy đếm và liệt kê tất cả các vị trí tốt.

Dữ liệu vào

  • Dòng đầu chứa ba số nguyên n, m, p.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.
  • Dòng thứ ba chứa m số nguyên b1,b2,…,bm.

Dữ liệu ra

  • Dòng đầu chứa một số nguyên là số lượng vị trí tốt.
  • Dòng thứ hai chứa các vị trí tốt theo thứ tự tăng dần, cách nhau bởi dấu cách. Nếu không có vị trí nào tốt thì dòng này để trống.

Ràng buộc

  • 1≤n,m≤2·105
  • 1≤p≤2·105
  • 1≤ai,bi≤109

Ví dụ

Input Output Giải thích
5 3 1
1 2 3 2 1
1 2 3
2
1 3
Với q=1 ta lấy (a1,a2,a3)=(1,2,3), đúng là một hoán vị của b. Với q=2 ta lấy (2,3,2), không phải hoán vị của b. Với q=3 ta lấy (3,2,1), hợp lệ. Điều kiện q+2≤5 nên q chỉ chạy tới 3.
6 3 2
1 3 2 2 3 1
1 2 3
2
1 2
Bước nhảy là p=2. Với q=1 ta lấy (a1,a3,a5)=(1,2,3); với q=2 ta lấy (a2,a4,a6)=(3,2,1). Cả hai đều hợp lệ. Điều kiện q+4≤6 nên không còn q nào khác.
3 5 1
1 1 1
1 2 3 4 5
0 Ở đây m=5 lớn hơn n=3 nên không có q nào thoả q+(m−1)p≤n. Đáp án là 0 và dòng thứ hai để trống.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0