[Buổi 2][Chọn STL theo bài toán][WS] Bài 1: Bàn điều phối ưu tiên
Bàn điều phối ưu tiên
Bối cảnh và bài toán
Một cụm máy chủ nhận các tác vụ xử lý từ nhiều dịch vụ. Mỗi tác vụ có một id duy nhất và một mức priority. Khi tài nguyên rảnh, bộ điều phối phải chọn tác vụ quan trọng nhất; đồng thời màn hình giám sát đôi lúc chỉ cần xem tác vụ đang đứng đầu mà chưa chạy nó.
Hệ thống hỗ trợ ba loại lệnh:
ADD id priority: thêm một tác vụ mới. Cácidtrong lệnhADDđược đảm bảo không lặp.TOP: inidcủa tác vụ đang chờ cóprioritylớn nhất nhưng không xóa tác vụ.RUN: inidcủa tác vụ cóprioritylớn nhất rồi xóa tác vụ đó khỏi hàng chờ.
Nếu nhiều tác vụ có cùng priority, tác vụ có id nhỏ hơn được ưu tiên. Nếu TOP hoặc RUN khi hàng chờ rỗng, in EMPTY.
Yêu cầu
Xử lý toàn bộ chuỗi lệnh và in đúng phản hồi của hệ thống.
Input
- Dòng 1: số lệnh
q. qdòng tiếp theo là các lệnh.
Output
In một dòng cho mỗi lệnh TOP hoặc RUN.
Ràng buộc
1 <= q <= 2 * 10^51 <= id, priority <= 10^9- Mỗi
idchỉ xuất hiện trong tối đa một lệnhADD.
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | q ≤ 20 | 01–04 |
| S2 | 30% | q ≤ 2 000 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
7
ADD 10 5
ADD 3 5
TOP
RUN
TOP
RUN
RUN
Output
3
3
10
10
EMPTY
Giải thích. Hai tác vụ có cùng priority 5; quy tắc hòa ưu tiên id nhỏ hơn nên tác vụ 3 đứng đầu. TOP chỉ xem, còn RUN mới xóa tác vụ khỏi hàng chờ.
Ví dụ 2
Input
4
TOP
ADD 7 100
RUN
TOP
Output
EMPTY
7
EMPTY
Giải thích. Lần TOP đầu tiên gặp hàng chờ rỗng. Sau khi thêm tác vụ 7, lệnh RUN chạy và xóa nó, vì vậy TOP cuối cùng lại nhận EMPTY.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M01-B02-WS01 |
| Buổi | B02 |
| Loại bài | WORKSHOP |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 30 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++17 |
Nguồn: FULLHOUSE DEV — Self-generated.
Comments