[Buổi 18][Heap & Hàng đợi ưu tiên][HW] Bài 3: Bảng ưu tiên cập nhật lười
Bảng ưu tiên cập nhật lười
Bối cảnh và bài toán
Một hệ thống giữ nhiều task theo id, mỗi task hiện tại có một priority. Lệnh SET id p tạo hoặc cập nhật priority; REMOVE id xóa task nếu tồn tại; TOP cần trả task priority lớn nhất, nếu hòa chọn ID nhỏ nhất. Hệ thống không có thao tác sửa/xóa phần tử tùy ý trực tiếp trong heap.
Yêu cầu
Xử lý toàn bộ lệnh và trả lời TOP.
Input
- Dòng 1:
q. - q dòng, mỗi dòng là
SET id p,REMOVE id, hoặcTOP.
Output
Với mỗi TOP, in id priority của task tốt nhất hoặc EMPTY.
Ràng buộc
1 <= q <= 2 * 10^51 <= id, p <= 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | q <= 100 | 01–04 |
| S2 | 30% | q <= 5000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
7
SET 10 5
SET 20 7
TOP
SET 10 9
TOP
REMOVE 10
TOP
Output
20 7
10 9
20 7
Giải thích. Entry cũ (10,5) vẫn có thể còn trong heap nhưng không còn hợp lệ sau SET.
Ví dụ 2
Input
3
TOP
SET 1 3
TOP
Output
EMPTY
1 3
Giải thích. TOP đầu tiên khi chưa có task.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M05-B18-HW03 |
| Buổi | B18 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 55 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: FULLHOUSE DEV – Self-generated.
Comments