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

Thang máy văn phòng

Đề bài

Mô tả

Một tòa nhà văn phòng có 9 tầng và một thang máy chở được tối đa 4 người cùng lúc. Bạn phụ trách điều khiển thang máy này.

n nhân viên đang xếp hàng chờ. Với nhân viên thứ i, bạn biết tầng ai mà họ đang đứng và tầng bi mà họ muốn tới. Bạn cũng biết thứ tự các nhân viên đã đến xếp hàng.

Theo quy định của công ty, nếu một nhân viên đến chỗ thang máy sớm hơn một người khác thì họ phải vào thang máy trước (kể cả khi hai người đứng ở các tầng khác nhau). Nhân viên có thể ra khỏi thang máy theo thứ tự bất kỳ.

Thang máy có hai lệnh:

  • Đi lên hoặc xuống 1 tầng. Việc di chuyển tốn 1 giây.
  • Mở cửa ở tầng hiện tại. Khi đó, tất cả nhân viên đang trong thang máy đã tới đúng tầng đích của mình sẽ đi ra. Sau đó, các nhân viên đang đứng ở tầng này lần lượt vào thang máy theo đúng thứ tự hàng chờ, miễn là không vi phạm quy định về thứ tự nêu trên và thang máy còn chỗ. Mỗi nhân viên tốn 1 giây để đi vào và 1 giây để đi ra.

Ban đầu thang máy rỗng và ở tầng 1. Hãy tìm thời gian ít nhất cần để đưa tất cả nhân viên tới đúng tầng đích. Không cần đưa thang máy trở về tầng 1.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n: số nhân viên.
  • Dòng thứ i trong n dòng tiếp theo chứa hai số nguyên aibi: tầng nhân viên thứ i đang đứng và tầng họ muốn tới.

Các nhân viên được cho theo đúng thứ tự họ đến xếp hàng.

Dữ liệu ra

  • In ra một số nguyên duy nhất: thời gian ít nhất (tính bằng giây).

Ràng buộc

  • 1n2000
  • 1ai,bi9, aibi

Ví dụ

Input Output Giải thích
2
5 3
3 5
12 Đi 15 (4s), mở cửa cho người 1 vào (1s). Đi 53 (2s), mở cửa: người 1 ra (1s) và người 2 vào (1s). Đi 35 (2s), mở cửa: người 2 ra (1s). Tổng =12.
2
3 5
5 3
10 Đi 13 (2s), mở cửa cho người 1 vào (1s). Đi 35 (2s), mở cửa: người 1 ra (1s) và người 2 vào (1s). Đi 53 (2s), mở cửa: người 2 ra (1s). Tổng =10.

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