아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

구간 합 최대 2

시간 제한1초메모리 제한256 MB

요약
점 갱신이 있는 수열에서 구간마다 U 곱하기 부분합 더하기 V 곱하기 (길이 빼기 1)의 최댓값을 구한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 분할 정복, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

길이가 NN인 정수 수열 K1,K2,…,KNK_1, K_2, \ldots, K_N과 상수 UU, VV가 주어진다.

쿼리 QQ개가 주어지며, 종류는 두 가지다.

  1. AA, BB가 주어지면 A≤i≤j≤BA \le i \le j \le B인 모든 (i,j)(i, j)에 대해 U×(Ki+Ki+1+⋯+Kj)+V×(j−i)U \times (K_i + K_{i+1} + \cdots + K_j) + V \times (j - i)의 최댓값을 구한다.
  2. AA, BB가 주어지면 KAK_A의 값을 BB로 바꾼다.

입력

첫째 줄에 정수 NN, QQ, UU, VV가 주어진다. (1≤N,Q≤1051 \le N, Q \le 10^5, −5≤U,V≤5-5 \le U, V \le 5)

둘째 줄에 정수 K1,K2,…,KNK_1, K_2, \ldots, K_N이 주어진다. (−100≤Ki≤100-100 \le K_i \le 100)

셋째 줄부터 QQ개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다. 각 줄에는 세 정수 CC, AA, BB가 주어진다. (0≤C≤10 \le C \le 1)

CC가 0이면 첫 번째 종류의 쿼리이고, 아니면 두 번째 종류의 쿼리다. 첫 번째 종류의 쿼리에서는 1≤A≤B≤N1 \le A \le B \le N이다. 두 번째 종류의 쿼리에서는 1≤A≤N1 \le A \le N, −100≤B≤100-100 \le B \le 100이다.

출력

첫 번째 종류의 쿼리마다 그 결과를 한 줄에 하나씩 주어진 순서대로 출력한다.

예제1

  1. 예제 1

    입력
    5 3 2 4
    1 1 1 1 1
    0 1 5
    1 3 -2
    0 1 5
    
    예상 출력
    26
    20