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

FJ Loves Rotations

Đề bài

Mô tả

Bác John có một mảng A gồm N số nguyên, đánh số từ 1 đến N. Bác chọn trước một vị trí j và ghi lại giá trị Aj đang đứng ở đó.

Sau đó, mỗi bước bác dịch vòng cả mảng sang trái hoặc sang phải một ô, rồi ghi lại giá trị mới đang đứng ở vị trí j. Dịch vòng nghĩa là phần tử bị đẩy ra khỏi một đầu sẽ quay lại ở đầu kia.

Bác muốn ghi được tất cả các giá trị phân biệt có trong mảng. Với mỗi vị trí j từ 1 đến N, hãy tính số bước dịch ít nhất cần thực hiện.

Dữ liệu vào

  • Dòng 1: số nguyên N.
  • Dòng 2: N số nguyên A1,A2,,AN.

Dữ liệu ra

Một dòng gồm N số nguyên cách nhau bởi dấu cách, số thứ j là đáp án ứng với vị trí j.

Ràng buộc

  • 1N5×105
  • 1AiN

Ví dụ

Input Output Giải thích
6
1 2 3 1 3 4
4 3 3 4 3 3 Mảng có 4 giá trị phân biệt là 1, 2, 3, 4. Với j=2, bác đã có sẵn A2=2; dịch để lần lượt đọc A3=3, A4=1, A5=3, A6=4 thì mất 4 bước, nhưng đi về phía kia đọc A1=1, A6=4, A5=3 chỉ mất 3 bước.
12
1 1 2 1 1 3 1 1 4 1 1 1
8 7 6 7 8 9 8 7 6 7 8 9 Bốn giá trị phân biệt nằm ở các vị trí 1, 3, 6, 9. Vị trí 3 và vị trí 9 là hai chỗ tốt nhất, chỉ cần 6 bước.

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