けんちょんの競プロ精進記録

競プロの精進記録や小ネタを書いていきます

鉄則本 A52 - Queue (4Q, ★2)

キューの使い方の確認!

問題概要

以下の 3 種類のクエリ ( Q 個) を高速に処理するプログラムを実装せよ。行列管理システムを模している。

  • クエリタイプ 1:行列の最後尾に  x さんが並ぶ
  • クエリタイプ 2:行列の先頭にいる人の名前を答える
  • クエリタイプ 3:行列の先頭にいる人を列から抜けさせる

初期状態では、行列に 1 人も並んでいない。また、クエリタイプ 2, 3 が呼ばれるときには、人が 1 人以上並んでいることが保証される。

制約

  •  1 \le Q \le 10^{5}

メモ

キューを使う。解法は鉄則本にあるので、鉄則本を参照。

コード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int Q, type;
    string S;

    cin >> Q;
    queue<string> que;  // キュー
    while (Q--) {
        cin >> type;
        if (type == 1) {
            cin >> S;
            que.push(S);
        } else if (type == 2) {
            cout << que.front() << endl;
        } else {
            que.pop();
        }
    }
}