1 条题解
-
0
#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
- 上传者