0
点赞
收藏
分享

微信扫一扫

Problem A: STL——管道二

小云晓云 2023-05-25 阅读 93


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 TEAM
GPL2.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; }
 
          }
        }
 
    }
}



举报

相关推荐

0 条评论