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

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

Đề bài

Mô tả

Cho hai hoán vị ab 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ị ab được định nghĩa là giá trị nhỏ nhất của |ij| 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 1in) của hoán vị b là hoán vị

bi,bi+1,,bn,b1,b2,,bi1.

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

  • 1n105
  • ab 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.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