Đóng thẻ trình duyệt

Đề bài

Mô tả

Trên trình duyệt đang mở n thẻ (tab), đánh số từ 1 đến n theo thứ tự từ trái sang phải. Con trỏ chuột đang ở thẻ số pos.

Bạn chỉ cần dùng các thẻ có chỉ số từ l đến r, nên muốn đóng toàn bộ những thẻ nằm ngoài đoạn [l,r] càng nhanh càng tốt.

Gọi ab lần lượt là chỉ số nhỏ nhất và lớn nhất trong số các thẻ chưa bị đóng ở thời điểm hiện tại. Mỗi giây, khi con trỏ đang ở thẻ i, bạn được chọn đúng một trong bốn thao tác:

  • Chuyển con trỏ sang trái: con trỏ tới thẻ max(i1,a).
  • Chuyển con trỏ sang phải: con trỏ tới thẻ min(i+1,b).
  • Đóng mọi thẻ bên trái con trỏ, tức là các thẻ có chỉ số trong đoạn [a,i1].
  • Đóng mọi thẻ bên phải con trỏ, tức là các thẻ có chỉ số trong đoạn [i+1,b].

Ví dụ, nếu ban đầu có 7 thẻ và các thẻ 1,2,7 đã bị đóng thì a=3b=6.

Hãy tính số giây ít nhất cần dùng để cuối cùng chỉ còn lại đúng những thẻ có chỉ số ban đầu từ l đến r.

Dữ liệu vào

Một dòng duy nhất chứa bốn số nguyên n, pos, l, r: số thẻ ban đầu, vị trí con trỏ, và đoạn thẻ cần giữ lại.

Dữ liệu ra

In ra một số nguyên duy nhất là số giây ít nhất cần dùng.

Ràng buộc

  • 1n100
  • 1posn
  • 1lrn

Ví dụ

Input Output Giải thích
5 2 1 5 0 Đoạn cần giữ đã là toàn bộ các thẻ, không cần làm gì.
6 3 1 3 1 Chỉ cần đóng mọi thẻ bên phải con trỏ (các thẻ 4,5,6).
6 3 2 4 5 Chuyển con trỏ sang thẻ 2, đóng phần bên trái, rồi chuyển con trỏ sang thẻ 3, sang thẻ 4, và đóng phần bên phải.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0