#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 2e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
int n, q;
int p[N], a[2][N];
struct SegTree {
int n;
vector<int> seg;
SegTree() {}
SegTree(int n) : n(n) {
seg.resize(4 * n, 0);
}
void build(int a[], int id, int l, int r) {
if (l == r) {
seg[id] = a[l];
return;
}
int mid = (l + r) >> 1;
build(a, id * 2, l, mid);
build(a, id * 2 + 1, mid + 1, r);
seg[id] = min(seg[id * 2], seg[id * 2 + 1]);
}
void update(int id, int l, int r, int pos, int val) {
if (l > pos || r < pos) return;
if (l == r) {
seg[id] = val;
return;
}
int mid = (l + r) >> 1;
update(id * 2, l, mid, pos, val);
update(id * 2 + 1, mid + 1, r, pos, val);
seg[id] = min(seg[id * 2], seg[id * 2 + 1]);
}
int getMin(int id, int l, int r, int u, int v) {
if (l > v || r < u) return INF;
if (u <= l && r <= v) return seg[id];
int mid = (l + r) >> 1;
return min(getMin(id * 2, l, mid, u, v), getMin(id * 2 + 1, mid + 1, r, u, v));
}
};
SegTree segtree[2];
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for (int i = 1; i <= n; i++) {
cin >> p[i];
a[0][i] = p[i] + i;
a[1][i] = p[i] - i;
}
for (int i = 0; i <= 1; i++) {
segtree[i] = SegTree(n + 1);
segtree[i].build(a[i], 1, 1, n);
}
while (q--) {
int type; cin >> type;
if (type == 1) {
int k, val;
cin >> k >> val;
segtree[0].update(1, 1, n, k, val + k);
segtree[1].update(1, 1, n, k, val - k);
p[k] = val;
}
else {
int k; cin >> k;
// Xét các chung cư có vị trí >= k
int ans = -k + segtree[0].getMin(1, 1, n, k, n);
// Xét các chung cư có vị trí < k
if (k - 1 >= 1) ans = min(ans, k + segtree[1].getMin(1, 1, n, 1, k - 1));
cout << ans << '\n';
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDJlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTUgKyA1OyAKCmludCBuLCBxOyAKaW50IHBbTl0sIGFbMl1bTl07IAoKc3RydWN0IFNlZ1RyZWUgewoJaW50IG47ICAKCXZlY3RvcjxpbnQ+IHNlZzsgCgoJU2VnVHJlZSgpIHt9CgoJU2VnVHJlZShpbnQgbikgOiBuKG4pIHsKCQlzZWcucmVzaXplKDQgKiBuLCAwKTsgCgl9CgoJdm9pZCBidWlsZChpbnQgYVtdLCBpbnQgaWQsIGludCBsLCBpbnQgcikgewoJCWlmIChsID09IHIpIHsKCQkJc2VnW2lkXSA9IGFbbF07ICAKCQkJcmV0dXJuOyAgCgkJfQoJCWludCBtaWQgPSAobCArIHIpID4+IDE7ICAKCQlidWlsZChhLCBpZCAqIDIsIGwsIG1pZCk7IAoJCWJ1aWxkKGEsIGlkICogMiArIDEsIG1pZCArIDEsIHIpOyAKCQlzZWdbaWRdID0gbWluKHNlZ1tpZCAqIDJdLCBzZWdbaWQgKiAyICsgMV0pOyAKCX0KCgl2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHBvcywgaW50IHZhbCkgewoJCWlmIChsID4gcG9zIHx8IHIgPCBwb3MpIHJldHVybjsgCgkJaWYgKGwgPT0gcikgewoJCQlzZWdbaWRdID0gdmFsOyAKCQkJcmV0dXJuOyAKCQl9CgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgkJdXBkYXRlKGlkICogMiwgbCwgbWlkLCBwb3MsIHZhbCk7IAoJCXVwZGF0ZShpZCAqIDIgKyAxLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7IAoJCXNlZ1tpZF0gPSBtaW4oc2VnW2lkICogMl0sIHNlZ1tpZCAqIDIgKyAxXSk7IAoJfQoKCWludCBnZXRNaW4oaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCB1LCBpbnQgdikgewoJCWlmIChsID4gdiB8fCByIDwgdSkgcmV0dXJuIElORjsgIAoJCWlmICh1IDw9IGwgJiYgciA8PSB2KSByZXR1cm4gc2VnW2lkXTsgCgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgkJcmV0dXJuIG1pbihnZXRNaW4oaWQgKiAyLCBsLCBtaWQsIHUsIHYpLCBnZXRNaW4oaWQgKiAyICsgMSwgbWlkICsgMSwgciwgdSwgdikpOyAKCX0KfTsgCgpTZWdUcmVlIHNlZ3RyZWVbMl07IAoKaW50IG1haW4oKSB7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IAoJY2luLnRpZShudWxscHRyKTsgIAkKCWNpbiA+PiBuID4+IHE7IAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJY2luID4+IHBbaV07ICAKCQlhWzBdW2ldID0gcFtpXSArIGk7ICAKCQlhWzFdW2ldID0gcFtpXSAtIGk7IAoJfSAKCglmb3IgKGludCBpID0gMDsgaSA8PSAxOyBpKyspIHsKCQlzZWd0cmVlW2ldID0gU2VnVHJlZShuICsgMSk7IAoJCXNlZ3RyZWVbaV0uYnVpbGQoYVtpXSwgMSwgMSwgbik7IAoJfQoKCXdoaWxlIChxLS0pIHsKCQlpbnQgdHlwZTsgY2luID4+IHR5cGU7IAoKCQlpZiAodHlwZSA9PSAxKSB7CgkJCWludCBrLCB2YWw7IAoJCQljaW4gPj4gayA+PiB2YWw7IAoJCQlzZWd0cmVlWzBdLnVwZGF0ZSgxLCAxLCBuLCBrLCB2YWwgKyBrKTsgCgkJCXNlZ3RyZWVbMV0udXBkYXRlKDEsIDEsIG4sIGssIHZhbCAtIGspOyAgCgkJCXBba10gPSB2YWw7IAoJCX0KCQllbHNlIHsKCQkJaW50IGs7IGNpbiA+PiBrOyAgIAoJCQkvLyBYw6l0IGPDoWMgY2h1bmcgY8awIGPDsyB24buLIHRyw60gPj0gawoJCQlpbnQgYW5zID0gLWsgKyBzZWd0cmVlWzBdLmdldE1pbigxLCAxLCBuLCBrLCBuKTsgIAoJCQkvLyBYw6l0IGPDoWMgY2h1bmcgY8awIGPDsyB24buLIHRyw60gPCBrCgkJCWlmIChrIC0gMSA+PSAxKSBhbnMgPSBtaW4oYW5zLCBrICsgc2VndHJlZVsxXS5nZXRNaW4oMSwgMSwgbiwgMSwgayAtIDEpKTsgCgkJCWNvdXQgPDwgYW5zIDw8ICdcbic7IAoJCX0KCX0KfQ==