[C++] BAEKJOON 18258


キュー。


質問する


整数を格納するキューを実装し、入力としてのコマンドを処理するプログラムを作成してください.
命令は全部で6条ある.
Push X:整数Xをキューに入れる演算.
pop:キューから先頭の整数を削除し、出力します.キューに整数がない場合は、-1が出力されます.
size:出力キューの整数の個数.
キューが空の場合、1または0が出力されます.
front:出力キューの一番前の整数.キューに整数がない場合は、-1が出力されます.
back:出力キューの一番後ろの整数.キューに整数がない場合は、-1が出力されます.

入力


1行目に与えられるコマンド数N(1≦N≦200000).2行目からN行目までそれぞれ1つのコマンドがあります.与えられた整数は1以上であり、100000以下である.問題にない命令はない.

しゅつりょく


出力するコマンドが発行されるたびに、各行に1つのコマンドが出力されます.

コード#コード#

#include <iostream>
#include <queue>
using namespace std;

int main(void) {
	cin.tie(NULL);  ios::sync_with_stdio(false);
	int N;
	cin >> N;
	string* input = new string[N];
	int *pushVal = new int[N];
	queue<int> q;
	for (int i = 0; i < N; i ++) {
		cin >> input[i];
		if (input[i] == "push") cin >> pushVal[i];
	}
	for (int i = 0; i < N; i++) {
		if (input[i] == "push") {
			q.push(pushVal[i]);
		}
		else if (input[i] == "pop") {
			if (!q.empty()) {
				cout << q.front() << '\n';
				q.pop();
			}
			else {
				cout << -1 << '\n';
			}
		}
		else if (input[i] == "size") {
			cout << q.size() << '\n';
		}
		else if (input[i] == "empty") {
			if (!q.empty()) {
				cout << 0 << '\n';
			}
			else {
				cout << 1 << '\n';
			}
		}
		else if (input[i] == "front") {
			if (!q.empty()) {
				cout << q.front() << '\n';
			}
			else {
				cout << -1 << '\n';
			}
		}
		else if (input[i] == "back") {
			if (!q.empty()) {
				cout << q.back() << '\n';
			}
			else {
				cout << -1 << '\n';
			}
		}
		
	}


	return 0;
}