LG-B3656. 【模板】双端队列 1

提交13 通过8
通过率61.5%
时间限制2000ms
内存限制250MiB

题目描述

【模板】双端队列 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_back,pop_front,front 和 back 操作,若当前双端队列为空则不进行,直接跳过该次操作。

输入格式

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

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

输出格式

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

输入样例 #1

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

1
3
3

说明/提示

输入样例 #2

34
size 4
back 8
pop_back 2
pop_front 1
front 2
push_back 3 568854979
push_front 7 920762287
size 5
pop_back 3
pop_front 9
front 4
size 6
front 1
push_front 4 933629565
pop_back 4
back 2
front 7
push_back 1 973438318
size 4
push_front 8 326373678
pop_front 9
push_back 6 259788949
size 7
pop_front 2
size 6
back 6
back 4
front 6
pop_front 1
push_back 9 513375476
push_back 10 876027443
front 3
pop_front 8
pop_back 10

输出样例 #2

0
0
0
920762287
0
1
1
259788949
259788949

输入样例 #3

32
push_front 5 4399929
front 2
back 9
push_front 3 239462622
size 7
push_back 8 243681992
back 10
front 7
pop_back 5
push_back 2 549745025
back 4
size 9
push_front 1 519882941
back 3
pop_back 6
front 1
front 10
push_back 4 99512950
push_front 3 578317770
pop_back 2
size 3
front 10
push_back 9 364799092
front 6
pop_back 8
push_front 7 56327635
push_back 4 931890565
push_back 2 250705497
pop_front 1
push_back 6 586818590
pop_back 3
back 8

输出样例 #3

0
0
239462622
519882941
2

【数据范围】

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

对于所有数据,1≤m,q≤1061 \leq m,q \leq 10^6,1≤x≤1091 \leq x \leq 10^9,1≤a≤1061 \leq a \leq 10^6