B - Queue

cpaojalds1

最終更新日

Table of Contents

Loading...

問題

https://onlinejudge.u-aizu.ac.jp/courses/lesson/1/ALDS1/3/ALDS1_3_B (新しいタブで開く)

問題文

名前と必要処理時間を持つプロセスが与えられて、順番に処理する。
各プロセスは最大 qq 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; }