题目

代码
| #include <iostream> |
| #include <algorithm> |
| #include <cstring> |
| using namespace std; |
| const int N = 100010; |
| int e[N], idx, l[N], r[N]; |
| |
| void init() |
| { |
| r[0] = 1; |
| l[1] = 0; |
| idx = 2; |
| } |
| |
| void insert_k(int k, int x) |
| { |
| e[idx] = x; |
| r[idx] = r[k]; |
| l[idx] = k; |
| l[r[k]] = idx; |
| r[k] = idx; |
| idx++; |
| } |
| |
| void erase_k(int k) |
| { |
| r[l[k]] = r[k]; |
| l[r[k]] = l[k]; |
| } |
| |
| void output() |
| { |
| for (int i = r[0]; i != 1; i = r[i]) |
| { |
| cout << e[i] << " "; |
| } |
| } |
| int main() |
| { |
| int m; |
| cin >> m; |
| init(); |
| while (m--) |
| { |
| string str; |
| cin >> str; |
| if (str == "L") |
| { |
| int x; |
| cin >> x; |
| insert_k(0, x); |
| } |
| else if (str == "R") |
| { |
| int x; |
| cin >> x; |
| insert_k(l[1], x); |
| } |
| else if (str == "D") |
| { |
| int k; |
| cin >> k; |
| erase_k(k + 1); |
| } |
| else if (str == "IL") |
| { |
| int k, x; |
| cin >> k >> x; |
| insert_k(l[k + 1], x); |
| } |
| else if (str == "IR") |
| { |
| int k, x; |
| cin >> k >> x; |
| insert_k(k + 1, x); |
| } |
| } |
| output(); |
| |
| return 0; |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架