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

Hàng người bị loại bỏ

Đề bài

Mô tả

n người đứng xếp thành một hàng ngang. Mỗi người được gán một số hiệu nguyên phân biệt từ 1 đến n.

Quá trình diễn ra theo từng bước. Trong mỗi bước, đồng thời với mọi vị trí: người nào có số hiệu lớn hơn số hiệu của người đứng ngay bên phải mình (nếu có) sẽ loại bỏ người bên phải đó khỏi hàng. Tất cả các phép loại bỏ trong một bước xảy ra cùng lúc, vì vậy một người vẫn có thể loại bỏ người bên phải mình ngay trong bước mà chính người đó bị loại bỏ. Sau khi loại bỏ xong, những người còn lại dồn lại thành một hàng mới giữ nguyên thứ tự tương đối.

Quá trình kết thúc khi không còn ai bị loại bỏ nữa (tức là hàng đã có số hiệu tăng dần từ trái sang phải).

Cho thứ tự ban đầu của hàng, hãy tính số bước cần thiết cho tới thời điểm mà sau đó không còn ai bị loại bỏ nữa.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên n: số người trong hàng.
  • Dòng thứ hai chứa n số nguyên phân biệt, mỗi số thuộc đoạn [1,n]: số hiệu của những người trong hàng theo thứ tự từ trái sang phải.

Dữ liệu ra

In ra một số nguyên duy nhất: số bước cần thiết để hàng trở nên ổn định.

Ràng buộc

  • 1n105
  • Các số hiệu tạo thành một hoán vị của 1,2,,n.

Ví dụ

Input Output Giải thích
10
10 9 7 8 6 5 3 4 2 1
2 Hàng biến đổi như sau: [10 9 7 8 6 5 3 4 2 1] → [10 8 4] → [10]. Ở bước đầu, số 9 vừa loại bỏ số 7 vừa bị số 10 loại bỏ. Sau 2 bước hàng chỉ còn một người nên không có gì thay đổi thêm.
6
1 2 3 4 5 6
0 Hàng đã tăng dần nên không ai bị loại bỏ, đáp án là 0.

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