Phân phòng khách sạn

Xem dạng PDF

Gửi bài giải

Điểm: 3,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
Blog Lập trình thuật toán – Chuyên đề cơ bản 2: Sắp xếp, sự kiện, nén số
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

📖 Bài giảng & lời giải: đây là Bài tập 7 trong bài giảng Chuyên đề cơ bản 2: Sắp xếp, sự kiện, nén số trên blog Lập trình thuật toán – có lý thuyết, mô phỏng từng bước, gợi ý và code C++ / Python.

⚠️ Lưu ý: hãy đảm bảo em đã thật sự cố gắng tự làm bài trước, rồi mới xem gợi ý và lời giải nhé!

🎓 Khóa học Lập trình Thuật toán thi đấu của thầy Nguyễn Việt Nam Sơn – 111 buổi video, kèm cặp cá nhân, luyện thi chuyên Tin · HSG Tin học · Tin học trẻ · đội tuyển quốc gia · Olympic/ICPC. 👉 Xem chi tiết khóa học · Thành tích học viên

📞 Đăng ký học: Zalo 0767 666 702 · Facebook Nguyễn Việt Nam Sơn · 🌐 laptrinhthuattoan.blogspot.com


Có $n$ khách đặt phòng, khách thứ $i$ ở từ ngày $a_i$ tới hết ngày $b_i$. Khách sạn phân phòng như sau:

  • Xét khách theo ngày đến tăng dần; nếu nhiều khách cùng ngày đến thì khách có số thứ tự nhỏ hơn được xét trước.
  • Một phòng được coi là trống đối với khách đến ngày $a$ nếu người ở trước đó trong phòng đã đi, tức ngày đi $b$ của người đó thoả mãn $b \lt a$.
  • Nếu có phòng trống, khách nhận phòng trống có số nhỏ nhất; nếu không có, khách sạn mở một phòng mới với số tiếp theo (các phòng được mở lần lượt có số 1, 2, 3, …).

Hãy in số phòng khách sạn đã mở và số phòng của từng khách.

Dữ liệu vào

  • Dòng 1: số nguyên $n$ ($1 \le n \le 2 \cdot 10^5$).
  • $n$ dòng tiếp theo, dòng thứ $i$ gồm hai số nguyên $a_i, b_i$ ($1 \le a_i \le b_i \le 10^9$).

Kết quả

  • Dòng 1: số phòng đã mở.
  • Dòng 2: $n$ số nguyên, số thứ $i$ là số phòng của khách thứ $i$ (theo thứ tự trong dữ liệu vào), cách nhau một dấu cách.

Sample Input

6
1 3
2 5
4 6
1 1
7 8
6 9

Sample Output

2
1 2 1 2 1 2 

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.