B3656 【模板】双端队列 1

题目背景

Aya 衷心祝愿大家不再因为 `std::deque` 重蹈覆辙。

题目描述

请你实现 $m$ 个双端队列,支持如下的 $q$ 次操作: - `push_back(a,x)`:在第 $a$ 个双端队列中从尾部插入一个元素 $x$; - `pop_back(a)`:在第 $a$ 个双端队列中从尾部弹出一个元素。 - `push_front(a,x)`:在第 $a$ 个双端队列中从头部插入一个元素 $x$; - `pop_front(a)`:在第 $a$ 个双端队列中从头部弹出一个元素。 - `size(a)`:查询第 $a$ 个双端队列的元素个数; - `front(a)`:查询第 $a$ 个双端队列的队首元素; - `back(a)`:查询第 $a$ 个双端队列的队尾元素; 对于 `pop_back`,`pop_front`,`front` 和 `back` 操作,若当前双端队列为空则不进行,直接跳过该次操作。

输入格式

输入的第一行是一个正整数 $q$,表示操作次数。 接下来 $q$ 行,每行先是一个字符串,保证为 `push_back` 或者 `pop_back` 或者 `push_front` 或者 `pop_front` 或者 `size` 或者 `front` 或者 `back` 之一。接下来是 $1$ 或 $2$ 个正整数,分别表示 $a$ 和 $x$。

输出格式

对于每个 `size` 或者 `front` 或者 `back` 操作,输出一行表示答案。

说明/提示

**【数据范围】** | 子任务 | $m \leq$ | $q \leq$ | 分值 | | :-----------: | :-----------: | :-----------: | :-----------: | | $1$ | $10$ | $10$ | $10$ | | $2$ | $2000$ | $2000$ | $20$ | | $3$ | $10^5$ | $10^5$ | $30$ | | $4$ | $10^6$ | $10^6$ | $40$ | 对于所有数据,$1 \leq m,q \leq 10^6$,$1 \leq x \leq 10^9$。