#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
int n, q;
int a[N];
struct node {
ll ans, max_suf, max_pref, sum;
node() {}
node(ll x) {
ans = max_suf = max_pref = max(0ll, x);
sum = x;
}
};
node operator+(const node& a, const node& b) {
node c;
c.ans = max({a.ans, b.ans, a.max_suf + b.max_pref});
c.max_suf = max(b.max_suf, b.sum + a.max_suf);
c.max_pref = max(a.max_pref, a.sum + b.max_pref);
c.sum = a.sum + b.sum;
return c;
}
node seg[4 * N];
void build(int id, int l, int r) {
if (l == r) {
seg[id] = node(a[l]);
return;
}
int mid = (l + r) >> 1;
build(id * 2, l, mid);
build(id * 2 + 1, mid + 1, r);
seg[id] = 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] = node(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] = seg[id * 2] + seg[id * 2 + 1];
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) cin >> a[i];
build(1, 1, n);
while (q--) {
int pos, val;
cin >> pos >> val;
update(1, 1, n, pos, val);
cout << seg[1].ans << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDJlNSArIDU7IAoKaW50IG4sIHE7IAppbnQgYVtOXTsgIAoKc3RydWN0IG5vZGUgewoJbGwgYW5zLCBtYXhfc3VmLCBtYXhfcHJlZiwgc3VtOyAgCgoJbm9kZSgpIHt9CgoJbm9kZShsbCB4KSB7CgkJYW5zID0gbWF4X3N1ZiA9IG1heF9wcmVmID0gbWF4KDBsbCwgeCk7ICAgCgkJc3VtID0geDsgIAoJfQp9OyAKCm5vZGUgb3BlcmF0b3IrKGNvbnN0IG5vZGUmIGEsIGNvbnN0IG5vZGUmIGIpIHsKCW5vZGUgYzsgCgljLmFucyA9IG1heCh7YS5hbnMsIGIuYW5zLCBhLm1heF9zdWYgKyBiLm1heF9wcmVmfSk7CgljLm1heF9zdWYgPSBtYXgoYi5tYXhfc3VmLCBiLnN1bSArIGEubWF4X3N1Zik7ICAgCgljLm1heF9wcmVmID0gbWF4KGEubWF4X3ByZWYsIGEuc3VtICsgYi5tYXhfcHJlZik7IAoJYy5zdW0gPSBhLnN1bSArIGIuc3VtOyAKCXJldHVybiBjOyAgIAp9Cgpub2RlIHNlZ1s0ICogTl07IAoKdm9pZCBidWlsZChpbnQgaWQsIGludCBsLCBpbnQgcikgewoJaWYgKGwgPT0gcikgewoJCXNlZ1tpZF0gPSBub2RlKGFbbF0pOyAKCQlyZXR1cm47IAoJfQoJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCglidWlsZChpZCAqIDIsIGwsIG1pZCk7IAoJYnVpbGQoaWQgKiAyICsgMSwgbWlkICsgMSwgcik7IAoJc2VnW2lkXSA9IHNlZ1tpZCAqIDJdICsgc2VnW2lkICogMiArIDFdOyAKfQoKdm9pZCB1cGRhdGUoaW50IGlkLCBpbnQgbCwgaW50IHIsIGludCBwb3MsIGludCB2YWwpIHsKCWlmIChsID4gcG9zIHx8IHIgPCBwb3MpIHJldHVybjsgCgoJaWYgKGwgPT0gcikgewoJCXNlZ1tpZF0gPSBub2RlKHZhbCk7IAoJCXJldHVybjsKCX0KCglpbnQgbWlkID0gKGwgKyByKSA+PiAxOyAKCXVwZGF0ZShpZCAqIDIsIGwsIG1pZCwgcG9zLCB2YWwpOyAKCXVwZGF0ZShpZCAqIDIgKyAxLCBtaWQgKyAxLCByLCBwb3MsIHZhbCk7IAoKCXNlZ1tpZF0gPSBzZWdbaWQgKiAyXSArIHNlZ1tpZCAqIDIgKyAxXTsgCn0KCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7ICAJCgljaW4gPj4gbiA+PiBxOyAgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOyAKCglidWlsZCgxLCAxLCBuKTsgCgkKCXdoaWxlIChxLS0pIHsKCQlpbnQgcG9zLCB2YWw7IAoJCWNpbiA+PiBwb3MgPj4gdmFsOyAKCQl1cGRhdGUoMSwgMSwgbiwgcG9zLCB2YWwpOyAKCQljb3V0IDw8IHNlZ1sxXS5hbnMgPDwgJ1xuJzsgCgl9Cn0=