兄貴の伝説 - hatena edition -

ソフトウェア職人を目指してます

4.3 キュー

std::queue バージョン。

#include <iostream>
#include <queue>

using namespace std;

struct Process {
    string name;
    int time;
};

static void inputProcess(queue<Process>& processQueue, int n) {
  Process in;
  for (int i = 0; i < n; i++) {
    cin >> in.name  >> in.time;
    processQueue.push(in);
   }
}

int main() {
  int n, q;
  cin >> n >> q;

  queue<Process> processQueue;
  inputProcess(processQueue, n);

  int total = 0;
  while (!processQueue.empty()) {
    Process now = processQueue.front();
    processQueue.pop();
    if (now.time <= q) {
      total += now.time;
      cout << now.name << ' ' << total << endl;
    } else {
      now.time -= q;
      total += q;
      processQueue.push(now);
    }
  }
  
  return 0;
}

問題の趣旨としては、stack も queue もフルスクラッチで書け、ということかもしれませんが、cpp かつ STL も使える環境で使わないのはなあ。。と思いました。