Có N task, mỗi task chỉ là một cặp (id, work_ms). Worker pool M worker xử lý các task. Quy ước: mỗi task được coi là 'thành công' nếu work_ms ≤ T (giả lập timeout deadline T), 'timeout' nếu vượt. Dùng select + time.After để mô phỏng deadline. KHÔNG sleep thật để test chạy nhanh — thay vào đó so sánh work_ms với T trong worker, sau đó gửi cặp (id, status) ra channel kết quả. Main gom N kết quả, sort theo id tăng dần và in dạng "id ok" hoặc "id timeout".
Dòng 1: N M T (1 ≤ M ≤ 16, 1 ≤ N ≤ 10^4, 1 ≤ T ≤ 10^9). Tiếp theo N dòng: id work_ms (1 ≤ id, work_ms ≤ 10^9). id duy nhất.
N ≤ 10^4; M ≤ 16
N dòng dạng "id ok" hoặc "id timeout", sort theo id tăng dần.
Ví dụ:
Đầu vào:
4 2 100
1 50
2 150
3 100
4 200
Đầu ra:
1 ok
2 timeout
3 ok
4 timeout
Giải thích:
Đang tải editor...