えびちゃんは数列 (a1,a2,…,an) を持っています。 えびちゃんは(空でもよい)部分配列の総和の最大値が気になるので、それを求めてください。 ここで、部分配列とは連続する部分列を指します。なお、空列の総和は 0 とします。
さらに、えびちゃんがこの数列を q 回書き換えるので、各書き換えの直後にこの値を求めてください。
n q a1 a2 ... an k1 x1 ... kq xq
各 kj, xj (1≤j≤q) は、akj を xj に書き換えることを意味します。 各書き換えは独立ではなく、その後の処理において配列は書き換えられたままであることに注意してください。
q+1 行出力してください。1 行目には書き換えを行う前の、1+i 行目には i 回目の書き換えの直後の部分配列の総和の最大値を出力してください。
5 2 1 2 -3 4 -5 3 3 2 -6
4 10 7
部分配列 (al,…,ar) を a[l,r] と表すことにすると、書き換え前は a[1,4] および a[4,4] の総和が 4 で、これが最大です。
1 回目の書き換えの後、数列は (1,2,3,4,−5) となり、総和の最大値は a[1,4] の 10 です。
2 回目の書き換えの後、数列は (1,−6,3,4,−5) となり、総和の最大値は a[3,4] の 7 です。
3 1 -1 -2 -3 1 1
0 1
空列の総和は 0 であり、書き換え前はそれが最大です。