1 条题解

  • 1
    @ 2024-7-25 13:38:48

    参考答案:

    #include<iostream>
    using namespace std;
    const int N = 100010;
    
    int idx = 2, e[N], l[N], r[N];
    
    void add(int k, int x)
    {
        e[idx] = x, r[idx] = r[k], l[r[k]] = idx, l[idx] = k, r[k] = idx++;
    }
    
    void del(int a)
    {
        r[l[a]] = r[a];
        l[r[a]] = l[a];
    }
    int main()
    {
        int m;
        r[0] = 1, l[1] = 0;
        cin >> m;
    
        while (m--)
        {
            string op;
            int k, x;
            cin >> op;
            if (op == "L")
            {
                cin >> x;
                add(0, x);
            }
            else if (op == "R")
            {
                cin >> x;
                add(l[1], x);
            }
            else if (op == "D")
            {
                cin >> k;
                del(k + 1);
            }
            else if (op == "IL")
            {
                cin >> k >> x;
                add(l[k + 1], x);
            }
            else
            {
                cin >> k >> x;
                add(k + 1, x);
            }
        }
    
        for (int i = r[0]; i != 1; i = r[i]) cout << e[i] << ' ';
    
        return 0;
    }
    
    • 1

    信息

    ID
    100
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者