luogu#B3656. 【模板】双端队列 1

【模板】双端队列 1

题目背景

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

题目描述

请你实现 mm 个双端队列,支持如下的 qq 次操作:

  • push_back(a,x):在第 aa 个双端队列中从尾部插入一个元素 xx
  • pop_back(a):在第 aa 个双端队列中从尾部弹出一个元素。
  • push_front(a,x):在第 aa 个双端队列中从头部插入一个元素 xx
  • pop_front(a):在第 aa 个双端队列中从头部弹出一个元素。
  • size(a):查询第 aa 个双端队列的元素个数;
  • front(a):查询第 aa 个双端队列的队首元素;
  • back(a):查询第 aa 个双端队列的队尾元素;

对于 pop_backpop_frontfrontback 操作,若当前双端队列为空则不进行,直接跳过该次操作。

输入格式

输入的第一行是一个正整数 qq,表示操作次数。

接下来 qq 行,每行先是一个字符串,保证为 push_back 或者 pop_back 或者 push_front 或者 pop_front 或者 size 或者 front 或者 back 之一。接下来是 1122 个正整数,分别表示 aaxx

输出格式

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

10
pop_back 2
push_back 1 1
push_front 1 3
push_front 2 2
push_front 2 3
pop_back 1
size 1
push_back 2 3
back 1
front 1
1
3
3

提示

【数据范围】

子任务 mm \leq qq \leq 分值
11 1010
22 20002000 2020
33 10510^5 3030
44 10610^6 4040

对于所有数据,1m,q1061 \leq m,q \leq 10^61x1091 \leq x \leq 10^9