問題
https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/3/ALDS1_3_B
問題文
名前と必要処理時間を持つプロセスが与えられて、順番に処理する。
各プロセスは最大 ms (クオンタム) だけ処理され、完了しなければ列の末尾に移動し、次のプロセスを実行する。
このラウンドロビンスケジューリングをシミュレーションしてね。
制約
サンプル
I/O 1
5 100 p1 150 p2 80 p3 200 p4 350 p5 20
p2 180 p5 400 p1 450 p3 550 p4 800
考察
queue に入れてそのままやるだけ。
コード
https://onlinejudge.u-aizu.ac.jp/status/users/a01sa01to/submissions/1/ALDS1_3_B/judge/6745957/C++17
typedef pair<string, int> P; int main() { int n, q; cin >> n >> q; queue<P> que; rep(i, n) { string s; int t; cin >> s >> t; que.push({ s, t }); } int now = 0; while (!que.empty()) { auto [s, t] = que.front(); que.pop(); if (t <= q) { now += t; cout << s << " " << now << endl; } else { t -= q; now += q; que.push({ s, t }); } } return 0; }