Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "bits/stdc++.h"
- using namespace std;
- template<class T> using min_pq=priority_queue<T, vector<T>, greater<T>>;
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- int rnd(int l, int r){
- return uniform_int_distribution<int>(l, r)(rng);
- }
- #define sz(v) (int)v.size()
- #define ar array
- // #define f first
- // #define s second
- typedef vector<int> vi;
- typedef long long ll;
- typedef long double ld;
- typedef unsigned int ui;
- const int MAXN = 3e5+10, MAXQ = 3e5+10, MAXL = 20, ALP = 26, MOD = 1e9+7, MAXK = 17, INF = 1e9+10, MAXA = 30, MAXB = 24, MAXBB = (1<<MAXB);
- const string no = "NO\n", yes = "YES\n";
- const int hA[4] = {1, 0, -1, 0}, kA[4] = {0, 1, 0, -1};
- #include<bits/extc++.h>
- int n, q;
- ll a[MAXN], val[MAXN+MAXQ];
- map<ll, int> loc;
- hash_set<int> pos[MAXN+MAXQ];
- int cloc = 0, me[MAXN];
- int mrg(int i, int j) {
- if (sz(pos[i]) < sz(pos[j])) {
- swap(i, j);
- }
- for (auto v : pos[j]) {
- pos[i].insert(v);
- me[v] = i;
- }
- pos[j].clear();
- return i;
- }
- void solve(){
- cin >> n >> q;
- for (int i = 0; i < n; i++) {
- cin >> a[i];
- if (!loc.count(a[i])) loc[a[i]] = cloc++;
- pos[loc[a[i]]].insert(i);
- val[loc[a[i]]] = a[i], me[i] = loc[a[i]];
- }
- while (q--) {
- int t; cin >> t;
- if (t == 1) {
- int i; ll x; cin >> i >> x, --i;
- ll ai = val[me[i]];
- int ol = me[i];
- pos[ol].erase(i);
- if (!sz(pos[ol]))
- loc.erase(ai);
- ai += x;
- if (!loc.count(ai)) {
- loc[ai] = cloc++;
- val[loc[ai]] = ai;
- }
- me[i] = loc[ai];
- pos[loc[ai]].insert(i);
- }
- if (t == 2) {
- ll x, y; cin >> x >> y;
- if (!loc.count(y))
- loc[y] = cloc++;
- int yl=loc[y];
- val[yl] = y;
- auto it = loc.begin();
- while (it != loc.end() && it->first <= x) {
- loc[y] = yl = mrg(it->second, yl);
- val[yl] = y;
- loc.erase(it);
- it = loc.begin();
- }
- }
- }
- for (int i = 0; i < n; i++) cout << val[me[i]] << ' '; cout << '\n';
- }
- int main(){
- ios::sync_with_stdio(false); cin.tie(0);
- solve();
- }
Add Comment
Please, Sign In to add comment