trang chủ / đề bài / elephshift

Phép dịch vòng của Chú voi con

Đề bài

Mô tả

Cho hai hoán vị a và b có độ dài n, gồm các số nguyên từ 1 đến n. Ký hiệu ai là phần tử thứ i của hoán vị a, và bj là phần tử thứ j của hoán vị b.

Khoảng cách giữa hai hoán vị a và b được định nghĩa là giá trị nhỏ nhất của |i−j| trên mọi cặp (i,j) sao cho ai=bj. Nói cách khác, với mỗi giá trị, ta xét hiệu vị trí của nó trong a và trong b, rồi lấy giá trị tuyệt đối nhỏ nhất.

Phép dịch vòng thứ i (với 1≤i≤n) của hoán vị b là hoán vị

bi,bi+1,…,bn,b1,b2,…,bi−1.

Một hoán vị có tất cả n phép dịch vòng.

Với mỗi phép dịch vòng của hoán vị b, hãy tính khoảng cách giữa phép dịch vòng đó và hoán vị a.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là độ dài của hai hoán vị.
  • Dòng thứ hai chứa hoán vị a gồm n số nguyên phân biệt.
  • Dòng thứ ba chứa hoán vị b gồm n số nguyên phân biệt.

Dữ liệu ra

In ra n dòng, dòng thứ i chứa khoảng cách giữa phép dịch vòng thứ i của b và hoán vị a, theo đúng thứ tự đánh số của các phép dịch vòng.

Ràng buộc

  • 1≤n≤105
  • a và b là các hoán vị của {1,2,…,n}.

Ví dụ

Input Output Giải thích
2
1 2
2 1
1
0
Dịch vòng thứ 1 là (2 1): số 1 ở vị trí 1 trong a và vị trí 2 trong bản dịch, số 2 ở vị trí 2 và 1, khoảng cách nhỏ nhất là 1. Dịch vòng thứ 2 là (1 2), trùng a, khoảng cách 0.
4
2 1 3 4
3 4 2 1
2
1
0
1
Bốn phép dịch vòng của b cho khoảng cách lần lượt là 2, 1, 0, 1.

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