RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00250

주가 최대 연속 등락폭

Gold I 골드 I
난이도
2s
시간 제한
256MB
메모리 제한
1
맞았습니다!!
1
제출 수
100.0%
정답률
레이팅

의견: 0

설명

어느 주식의 일별 등락폭 수열 \(a_1,\dots,a_N\)이 주어진다 (음수일 수 있다).

다음 두 명령을 처리하라.

  • U i x : \(i\)일째 등락폭을 \(x\)로 갱신한다.
  • Q l r : 구간 \([l,r]\) 안에서 연속한 부분구간의 등락폭 합 중 최댓값을 구한다. (부분구간은 비어 있을 수 없으며 최소 길이 \(1\)이다.)

모든 Q 명령에 대한 답을 출력하라.

제약

\(1 \le N, Q \le 100{,}000\), \(-10^6 \le a_i, x \le 10^6\), \(1 \le l \le r \le N\).

입력 형식

첫째 줄에 \(N\)\(Q\). 둘째 줄에 \(N\)개의 정수 \(a_i\). 이후 \(Q\)개의 줄에 명령이 주어진다.

출력 형식

Q 명령마다 한 줄에 최대 연속 부분합을 출력한다.

예제 1
입력
6 4
-2 1 -3 4 -1 2
Q 1 6
Q 4 6
U 3 5
Q 1 6
출력
5
5
11
설명

\(Q\,1\,6\)의 최대 연속 부분합은 \(4+(-1)+2=5\). \(Q\,4\,6=4-1+2=5\). \(3\)번을 \(5\)로 바꾸면 \(1-3+\dots\)가 아니라 \(-3\to5\)이 되어 \(1+5+4-1+2=11\)이 최대.

예제 2
입력
4 3
-5 -2 -8 -1
Q 1 4
U 2 3
Q 1 4
출력
-1
3
설명

모두 음수이면 가장 큰(절댓값이 작은) 한 원소가 답이다. 처음 \(-1\), \(2\)번을 \(3\)으로 바꾸면 \(3\).

힌트

막혔나요? 코인으로 단계별 힌트를 잠금 해제하세요 — 첫 힌트는 가벼운 방향 제시, 뒤로 갈수록 더 많이 알려 줍니다. 문제를 풀면 모든 힌트가 무료로 공개됩니다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

주가 최대 연속 등락폭

개요
출제자 난이도 Gold I 골드 I 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

주가 최대 연속 등락폭

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8