秋祭 | 静岡高校工学部



卬高杯

F問題 - Bringing Iced Tea - 解説 by TsuruNoTsurugi

実行時間制限: 2 sec / メモリ制限: 1024 MB
冷蔵庫の中身をシミュレーションすることを考えます。
C++ではqueue(STL)という構造体を用いることで非常に簡単に解くことができます。queueは、値を順々に追加し、追加した順番で取り出すことができるコンテナです。
値の追加はqueue qに対してq.push()、先頭要素取得はq.front()、先頭要素削除はq.pop()で行うことができます。また、すべて`O(1)`で行うことができます。
したがって、この構造体を用いることにより、`O(Q)`で本問を解くことができます。

なお、乙の2段目の場合、だけどいいかなが出力で共通しているため省略することができます。
解答例(C++)
#include<bits/stdc++.h>
using namespace std;

int main(){
	int Q;
	cin>>Q;
	queue<string> q;
	int q_type;
	while(Q--){
		cin>>q_type;
		if(q_type==1){
			string S;
			cin>>S;
			q.push(S);
		}
		else if(q_type==2){
			// q.empty()でqが空かを判別できる。
			if(q.empty()){
				cout<<"何もなくてごめんね"<<endl;
				continue;
			}
			cout<<q.front();
			if(q.size()==1){
				cout<<"しかなかったん";
			}
			cout<<"だけどいいかな"<<endl;
			q.pop();
		}
	}
	// q.size()でqの大きさを取得できる。
	cout<<q.size()<<endl;
}

コメント

Coffeとかいう未知の飲み物。興味があります。
問題はここから