조커의 카드 마술

0이 아닌 정수 카드 열에서 갱신이 일어날 때마다 양수 합과 음수 합으로 각 값을 나눈 누적합이 최대가 되는 가장 작은 위치를 구한다.

어려움8세그먼트 트리누적 합그리디수학아직 제출이 없습니다시간 제한3초메모리 제한512 MB

문제

조커는 수학이 필요한 새 카드 마술을 준비한다. 계산을 도와주자.

0이 아닌 정수 aia_i가 적힌 카드 nn장이 한 줄로 놓여 있다. 양수의 합을 PP, 음수의 합을 NN이라고 하자. 카드 ii의 무게 wiw_iai>0a_i > 0이면 ai/Pa_i / P, ai<0a_i < 0이면 ai/Na_i / |N|이다.

si=j=1iwjs_i = \sum_{j=1}^{i} w_j로 두자. 조커는 sis_i가 가장 큰 위치 ii를 알고 싶다. 그런 ii가 여러 개면 가장 작은 것을 고른다.

배열이 고정된 마술은 지루하다. 조커는 카드에 적힌 수를 바꾸고, 한 번 바꿀 때마다 sis_i가 가장 큰 위치를 다시 알고 싶어 한다.

입력

첫째 줄에 카드의 수 nn과 변경 횟수 mm이 주어진다 (1n,m500001 \le n, m \le 50000).

둘째 줄에 처음 카드에 적힌 정수 aia_inn개 주어진다 (109ai109-10^9 \le a_i \le 10^9, ai0a_i \ne 0).

다음 mm개 줄에 정수 pip_iviv_i가 하나씩 주어진다. 위치 pip_i에 있는 카드의 수가 viv_i로 바뀐다는 뜻이다 (1pin1 \le p_i \le n, 109vi109-10^9 \le v_i \le 10^9, vi0v_i \ne 0).

어느 순간에도 양수가 적힌 카드와 음수가 적힌 카드가 각각 한 장 이상 있다. 양수의 합은 10910^9을 넘지 않고, 음수의 절댓값의 합도 10910^9을 넘지 않는다.

출력

m+1m+1개 줄을 출력한다.

첫째 줄에는 처음 수열에서 sis_i가 가장 큰 위치를 출력한다. 이어지는 mm개 줄에는 각 변경 직후 sis_i가 가장 큰 위치를 한 줄에 하나씩 출력한다.