1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| void solve() { int n; cin >> n; int idx = 1; vector<int> pre(n + 2), nxt(n + 2), e(n + 2); nxt[0] = 1; pre[1] = 0; int &head = nxt[0]; int &tail = pre[1]; auto insert = [&](int x, int k) { idx++; e[idx] = x; pre[idx] = k; nxt[idx] = nxt[k]; pre[nxt[k]] = idx; nxt[k] = idx; }; auto del = [&](int k) { nxt[pre[k]] = nxt[k]; pre[nxt[k]] = pre[k]; }; for (int i = 1; i <= n; i++) { string s; cin >> s; if (s == "L") { int x; cin >> x; insert(x, 0); } else if (s == "R") { int x; cin >> x; insert(x, tail); } else if (s == "D") { int k; cin >> k; del(k + 1); } else if (s == "IL") { int k, x; cin >> k >> x; k++; insert(x, pre[k]); } else { int k, x; cin >> k >> x; k++; insert(x, k); } } for (int i = head; i != 1; i = nxt[i]) cout << e[i] << " "; }
|