Home
Web Board
ProblemSet
Standing
Status
Statistics
Problem A: STL——管道二
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 1847
Solved: 1112
[Submit][Status][Web Board]
Description
现在有一条垂直可容纳许多字符串的管道。我们定义了以下操作。
1.插入 将字符串压入管道中,新压入的字符串位于管道顶部。
2.插入 将字符串压入管道中,新压入的字符串位于管道底部。
3.输出管道中最低端字符串,如果管道为空,输出-1
4.输出管道中最高端的字符串,如果管道为空,输出-1
5.删除最低端字符串。删除后,原来位于第二低端的字符串到最低端。如果管道为空,则输出-1
6.删除最高端字符串。删除后,原本位于第二高的字符串到最高端。如果管道空,则输出-1
0.清空管道
Input
第一行为是整数Q 不超过1000
之后Q行 每行首先是一个整数 代表操作 0~6 三种操作分别对应
若操作为一 然后跟随一个字符串 只包含小写字母
Output
每2个操作输出相应的答案
Sample Input
31 a2 b3
Sample Output
b
HINT
STL中的deque可以很容易地完成这个问题。
Append Code
[ Submit][Status][Web Board]
한국어<中文فارسیEnglishไทย All Copyright Reserved 2010-2011 SDUSTOJ TEAMGPL2.0 2003-2011 HUSTOJ Project TEAM Anything about the Problems, Please Contact Admin:admin
#include <iostream>#include <deque>using namespace std;int main(){ int Q; while( cin >> Q ) { deque <string> q; for(int i = 0; i < Q; i++) { int num; cin >> num; switch(num) { case 1 : { string temp; cin >> temp; q.push_back(temp); break; } case 2: { string temp; cin >> temp; q.push_front(temp); break; } case 3: { if(q.empty()) cout << "-1" << endl; else cout << q.front() << endl; break; } case 4: { if(q.empty()) cout << "-1" << endl; else cout << q.back() << endl; //cout << *q.end() << endl; break; } case 5: { if(q.empty()) cout << "-1" << endl; else q.pop_front(); break; } case 6: { if(q.empty()) cout << "-1" << endl; else q.pop_back(); break; } case 0: { q.clear(); break; } default: { break; } } } }}
