備忘録
https://paiza.jp/works/mondai/stack_queue/stack_queue__practice_step1/edit?language_uid=c-plus-plus&t=a9b6ded5188080055103377217e6eb8e
より問題文引用
ログイン必須
詳しい説明はリンク先参照
Q 個のクエリが与えられます。 2 つのキューを用意したあと、 Q 個のクエリを順に処理してください。各クエリは、以下の 5 つのいずれかです。
・ PUSH 1 X: 1 つ目のキューに数値 X を追加
・ PUSH 2 X: 2 つ目のキューに数値 X を追加
・ POP 1: 1 つ目のキューの先頭の要素を削除し、その値を出力
・ POP 2: 2 つ目のキューの先頭の要素を削除し、その値を出力
・ SIZE: 1 つ目のキュー、 2 つ目のキューに含まれる要素数をそれぞれ出力
double_q.cpp
#include <iostream>
#include<vector>
using namespace std;
int main(void){
std::vector<int> a[2];
int q;std::cin >> q;
for (int i = 0; i < q; i++) {
int o;cin>>o;
if(o==1)//push
{
int k,x;cin>>k>>x;
k--;
a[k].push_back(x);
}
else if(o==2)//pop
{
int k;cin>>k;k--;
cout<<a[k][0]<<endl;
reverse(a[k].begin(),a[k].end());
a[k].pop_back();//順番を逆にした配列の末尾を消し元に戻すと先頭が削除されたことになる
reverse(a[k].begin(),a[k].end());
}else//サイズ表示
{
cout<<a[0].size()<<" "<<a[1].size()<<endl;
}
/* code */
}
}
模範解答
ログインしなければ見れないみたいです
https://paiza.jp/works/mondai/reviews/show/9d60e9910b711c51ecc57f6148aef54a
queue ライブラリというものがあったらしい