Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- bool check(pair<int, int> a, int i)
- {
- return i >= a.first && i <= a.second + 1;
- }
- const int INF = (int)1e9 + 10;
- main()
- {
- ios::sync_with_stdio(0);
- cin.tie(0);
- int m;
- cin >> m;
- vector<vector<int>> v(1);
- vector<pair<int, int>> p(1, {0, 0});
- vector<int> mn(1, INF);
- while(m--)
- {
- char cmd;
- cin >> cmd;
- if(cmd == '+')
- {
- int id, x;
- cin >> id >> x;
- for(int i = 0; i < v.size(); i++)
- {
- if(check(p[i], id))
- {
- int it = id - p[i].first;
- v[i].insert(v[i].begin() + it, x);
- if(v[i].size() > 1)
- p[i].second++;
- for(int j = i + 1; j < p.size(); j++)
- p[j].first++, p[j].second++;
- mn[i] = min(mn[i], x);
- int sz = 0;
- if(v[i].size() > 900)
- {
- vector<int> v1, v2;
- int mn1 = INF, mn2 = INF;
- for(int j = 0; j < v[i].size() / 2; j++)
- v1.push_back(v[i][j]), mn1 = min(v[i][j], mn1);
- for(int j = v[i].size() / 2; j < v[i].size(); j++)
- v2.push_back(v[i][j]), mn2 = min(v[i][j], mn2);
- v[i] = v1;
- v.insert(v.begin() + i + 1, v2);
- p[i].second = p[i].first + v1.size() - 1;
- p.insert(p.begin() + i + 1, {p[i].second + 1, p[i].second + v2.size()});
- mn[i] = mn1;
- mn.insert(mn.begin() + 1 + i, mn2);
- }
- break;
- }
- }
- }
- else
- {
- int l, r;
- cin >> l >> r;
- l--;
- r--;
- int ans = INF;
- for(int i = 0; i < p.size(); i++)
- {
- if(p[i].first >= l && p[i].second <= r)
- ans = min(ans, mn[i]);
- else if(l > p[i].second)
- continue;
- else if(r < p[i].first)
- continue;
- else
- for(int j = 0; j < v[i].size(); j++)
- if(j + p[i].first >= l && j + p[i].first <= r)
- ans = min(ans, v[i][j]);
- }
- cout << ans << "\n";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement