1 条题解

  • 0
    @ 2023-1-31 9:54:37
    #include <bits/stdc++.h>
    using namespace std;
    list<vector<int> > v(1005);
    int n, SZ;
    int a[112345];
    vector<int> temp;
    void update(int pos, int x)
    {
        list<vector<int> >::iterator it = v.begin();
        while (it->size() < pos)
        {
            pos -= it->size();
            it++;
        }
        it->insert(it->begin() + pos - 1, x);
        if (it->size() <= 2 * SZ)
            return;
        v.insert(it, vector<int>());
        list<vector<int> >::iterator new_it = it;
        new_it--;
        while (it->size() > SZ)
        {
            new_it->push_back(*(it->begin()));
            it->erase(it->begin());
        }
    }
    int query(int pos)
    {
        list<vector<int> >::iterator it = v.begin();
        while (it->size() < pos)
        {
            pos -= it->size();
            it++;
        }
        return (*it)[pos - 1];
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        cin >> n;
        SZ = sqrt(n);
        list<vector<int> >::iterator it = v.begin();
        for (int i = 1; i <= n; i++)
        {
            cin >> a[i];
            it->push_back(a[i]);
            if (it->size() == SZ)
                it++;
        }
        for (int i = 1; i <= n; i++)
        {
            int opt, l, r, c;
            cin >> opt >> l >> r >> c;
            if (opt == 0)
                update(l, r);
            else
                cout << query(r) << "\n";
        }
        return 0;
    }
    
    • 1

    信息

    ID
    877
    时间
    500ms
    内存
    256MiB
    难度
    9
    标签
    递交数
    7
    已通过
    5
    上传者