Back Junアルゴリズム10866号:DEX


リンク


https://www.acmicpc.net/problem/10866

質問する


整数を格納するDequeを実行し、入力としてのコマンドを処理するプログラムを作成します.
命令は全部で8条ある.
  • push frontX:整数Xをインデックスの前に配置します.
  • push backX:整数Xをインデックスの後ろに配置します.
  • pop front:インデックスの一番前の数字を削除し、その数字を出力します.インデックスに整数がない場合は、-1が出力されます.
  • pop back:dexの最後の数字を出力します.インデックスに整数がない場合は、-1が出力されます.
  • size:インデックス内の整数の個数を出力します.
  • 空:インデックスが空の場合、1または0が出力されます.
  • front:インデックスの一番前の整数を出力します.インデックスに整数がない場合は、-1が出力されます.
  • back:インデックスの一番後ろの整数を出力します.インデックスに整数がない場合は、-1が出力されます.
  • 入力


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

    しゅつりょく


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

    入力と出力の例



    プールコード(C++)

    #include <bits/stdc++.h>
    #define X first
    #define Y second
    #define pb push_back
    #define sz(a) int((a).size())
    #define fastio ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
    #define MAX(a, b) (((a) > (b)) ? (a) : (b))
    using namespace std;
    using ll = long long;
    using ull = unsigned long long;
    using dbl = double;
    using ldb = long double;
    using pii = pair<int,int>;
    using pll = pair<ll,ll>;
    using vi = vector<int>;
    using wector = vector<vector<int>>;
    using tiii = tuple<int,int,int>;
    
    int main() {
    	fastio;
      int tc,t; cin >> tc;
      string s;
      deque<int> dq;
      while(tc--){
        cin >> s;
        if(s == "push_front") cin >> t, dq.push_front(t);
        else if(s == "push_back") cin >> t, dq.push_back(t);
        else if(s == "pop_front") cout << (dq.empty() ? -1 : dq.front()) << "\n",dq.size() ? dq.pop_front() : void();
        else if(s == "pop_back") cout << (dq.empty() ? -1 : dq.back()) << "\n", dq.size() ? dq.pop_back() : void();
        else if(s == "size") cout << dq.size() << "\n";
        else if(s == "empty") cout << dq.empty() << "\n";
        else if(s == "front") cout << (dq.empty() ? - 1 : dq.front()) << "\n";
        else if(s == "back") cout << (dq.empty() ? - 1 : dq.back()) << "\n";
      }
    	return 0;
    }