Khung chọn thư mục

Đề bài

Mô tả

Trên màn hình có n thư mục được đánh số từ 1 đến n và sắp xếp thành một lưới: mỗi hàng chứa tối đa m thư mục. Các thư mục được điền lần lượt từ trái sang phải, từ trên xuống dưới — nghĩa là thư mục 1 đến m nằm ở hàng đầu tiên, thư mục m+1 đến 2m nằm ở hàng thứ hai, v.v. Hàng cuối cùng có thể không đầy.

Bạn muốn chọn (bôi đen) đúng tập các thư mục có số hiệu từ a đến b (kể cả hai đầu), không thừa không thiếu. Mỗi lần thao tác, bạn vẽ một hình chữ nhật có các cạnh song song với màn hình; tất cả thư mục nằm trong hình chữ nhật đó sẽ được chọn.

Nếu một thư mục bị chọn lại lần nữa thì nó sẽ bị bỏ chọn, nhưng để đạt số lần ít nhất ta không cần dùng đến điều này.

Hãy tìm số lần vẽ hình chữ nhật ít nhất để tập thư mục được chọn đúng bằng các thư mục từ a đến b.

Dữ liệu vào

Một dòng duy nhất chứa bốn số nguyên n, m, a, b.

Dữ liệu ra

In ra một số nguyên duy nhất — số lần vẽ hình chữ nhật ít nhất.

Ràng buộc

  • 1n,m109
  • 1abn

Ví dụ

Input Output Giải thích
11 4 3 9 3 Lưới có 4 cột. Cần chọn 3,4 (cuối hàng 1), 5,6,7,8 (cả hàng 2) và 9 (đầu hàng 3) — ba khối tách rời nên cần 3 hình chữ nhật.
20 5 2 20 2 Lưới 5 cột, 20 thư mục đầy 4 hàng. Chọn 2,3,4,5 ở phần còn lại của hàng 1 bằng một hình chữ nhật, rồi chọn toàn bộ ba hàng còn lại (6 đến 20) bằng hình chữ nhật thứ hai.
51474721 867363452 12231088 43489285 1 m lớn hơn n, tất cả thư mục nằm trên cùng một hàng nên chỉ cần một hình chữ nhật.

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