{"code":"round_robin_scheduling","name":"Lập lịch Round-Robin","description":"Có **\\( n \\)** tiến trình trong một hàng đợi.  \r\nMỗi tiến trình có **\\( \\text{name}_i \\)** (tên) và **\\( \\text{time}_i \\)** (thời gian thực thi).  \r\nThuật toán **Round-Robin scheduling** xử lý các tiến trình theo thứ tự trong hàng đợi.\r\n\r\nBộ lập lịch Round-Robin cấp cho mỗi tiến trình một **quantum** (khoảng thời gian xử lý).  \r\nNếu tiến trình chưa hoàn thành sau khoảng thời gian đó, nó sẽ bị **tạm dừng**, **chuyển ra cuối hàng đợi**, và bộ lập lịch sẽ xử lý tiến trình kế tiếp.\r\n\r\nGiả sử ta có hàng đợi ban đầu với **\\( \\text{quantum} = 100\\,\\text{ms} \\)**:\r\n    $A(150) - B(80) - C(200) - D(200)$\r\n\r\nTiến trình **A** được xử lý trong 100 ms, sau đó bị tạm dừng và chuyển ra cuối hàng đợi với thời gian còn lại **50 ms**:\r\n$B(80) - C(200) - D(200) - A(50)$\r\n\r\nTiến trình **B** được xử lý trong 80 ms và **hoàn thành** tại thời điểm **180 ms**, sau đó bị loại khỏi hàng đợi:\r\n\r\n$C(200) - D(200) - A(50)$\r\n\r\nHãy viết một chương trình **mô phỏng thuật toán round-robin scheduling**.\r\n\r\n\r\n\r\n#### **Input**\r\n\r\n- Dòng đầu chứa hai số nguyên: \\( n \\) và \\( q \\) — số lượng tiến trình và độ dài quantum (ms).\r\n\r\n- \\( n \\) dòng tiếp theo:  Mỗi dòng chứa \\( \\text{name}_i \\) và \\( \\text{time}_i \\), trong đó:\r\n    - \\( \\text{name}_i \\): tên của tiến trình  \r\n    - \\( \\text{time}_i \\): thời gian cần để hoàn thành (ms)\r\n\r\n---\r\n\r\n#### **Output**\r\n\r\nIn ra tên và thời gian hoàn thành của tiến trình theo thứ tự\r\n\r\n\r\n#### **Constraint**\r\n\r\n - \\( 1 \\le n \\le 100000 \\)  \r\n - \\( 1 \\le q \\le 1000 \\)  \r\n - \\( 1 \\le \\text{time}_i \\le 50000 \\)  \r\n - \\( 1 \\le \\text{length}(\\text{name}_i) \\le 10 \\)  \r\n - \\( 1 \\le \\sum \\text{time}_i \\le 1000000 \\)\r\n\r\n!!! question \"Test 1\"\r\n\r\n    ???+ \"Input\"\r\n\r\n        ```sample\r\n        5 100\r\n        p1 150\r\n        p2 80\r\n        p3 200\r\n        p4 350\r\n        p5 20\r\n\r\n\r\n        ```\r\n\r\n    ???+ success \"Output\"\r\n\r\n        ```sample\r\n        p2 180\r\n        p5 400\r\n        p1 450\r\n        p3 550\r\n        p4 800\r\n\r\n        ```","points":100.0,"partial":true,"time_limit":1.0,"memory_limit":262144,"short_circuit":false,"allowed_languages":[3,4,34,36,37,5,6,11,12,14,28,2,38,39,9,18,17,29,23,27,35,25,26,10,7,19,32,1,8,15,16,24,20,33,13,41,21,40],"is_public":true,"is_manually_managed":false,"permissions":{"can_edit":false}}