trang chủ / đề bài / roomalloc

Bố trí Phòng Khách sạn

Đề bài

Mô tả

Một khách sạn cần bố trí phòng cho n khách. Hai khách có thể ở chung một phòng nếu ngày rời đi của khách thứ nhất thực sự sớm hơn ngày đến của khách thứ hai. Hãy tìm số phòng tối thiểu cần dùng và gán mỗi khách vào một phòng.

Dữ liệu vào

  • Dòng đầu: số nguyên n — số lượng khách.
  • n dòng tiếp theo, dòng thứ i: hai số nguyên ai và bi — ngày đến và ngày rời đi của khách i (1≤ai≤bi≤109).

Dữ liệu ra

  • Dòng 1: số nguyên k là số phòng tối thiểu cần dùng.
  • Dòng 2: n số nguyên trong đoạn [1,k], số thứ i là phòng được gán cho khách i.

Nếu có nhiều cách bố trí dùng đúng k phòng, in ra một cách bất kỳ.

Ràng buộc

  • 1≤n≤2·105
  • 1≤ai≤bi≤109

Ví dụ

Input Output Giải thích
3
1 2
2 4
4 4
2
1 2 1
Khách 1 rời ngày 2, khách 3 đến ngày 4. Vì 2<4, họ ở chung phòng 1. Khách 2 ở ngày 2 đến ngày 4 nên chồng lấn cả hai khách kia và cần một phòng riêng.
4
1 3
2 5
4 6
3 4
3
1 2 1 3
Ngày 3 có ba khách 1, 2, 4 cùng ở nên cần ít nhất 3 phòng. Khách 1 rời ngày 3 còn khách 4 đến ngày 3, vì 3 không nhỏ hơn 3 nên hai người không thể ở chung. Khách 3 đến ngày 4 nên nhận lại phòng 1 của khách 1.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0