分析:
1.deque就是一个两头操作的队列。
2.有头插,尾插:push_front()/push_back()。
3.有头删,尾删:pop_front()/pop_back()。
4.然后再用一些工作性算法:sort(排序),reverse(倒置)。
知道这些之后做这道题就很简单了。
源码:
include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
char c[maxn];
deque q;
int main()
{
int n, m, x, y; scanf("%d%d", &n, &m); while (m--) { scanf("%d", &x); { if (x == 1) { scanf("%d", &y); q.push_front(y); } else if (x == 2) q.pop_front(); else if (x == 3) { scanf("%d", &y); q.push_back(y); } else if (x == 4) q.pop_back(); else if (x == 5) reverse(q.begin(), q.end()); else if (x == 6) { printf("%d\n", q.size()); for (int i = 0; i < q.size(); ++i) printf("%d ", q[i]); puts(""); } else sort(q.begin(), q.end()); } }
}