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

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

鉄則本 A51 - Stack (4Q, ★2)

人生で最初に解きたいスタックの問題

問題概要

以下の 3 種類のクエリ ( Q 個) を高速に処理するプログラムを実装せよ。

  • クエリタイプ 1: x という題名の本を机の一番上に積む
  • クエリタイプ 2:一番上に積まれている本の題名を答えよ
  • クエリタイプ 3:一番上に積まれている本を机から除去する

初期状態では、本は一冊も積まれていない。また、クエリタイプ 2, 3 が呼ばれるときには、本が一冊以上積まれていることが保証される。

制約

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

メモ

スタックを使う。詳細は鉄則本参照。

コード

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

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

    cin >> Q;
    vector<string> stk;  // スタック
    while (Q--) {
        cin >> type;
        if (type == 1) {
            cin >> S;
            stk.push_back(S);
        } else if (type == 2) {
            cout << stk.back() << endl;
        } else {
            stk.pop_back();
        }
    }
}