만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

수열과 최대 상승 쿼리

면접 대비

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

요약
수열의 값을 바꾸는 연산을 처리하고, 구간 [l, r]에서 i ≤ j인 a_j - a_i의 최댓값을 구합니다.
난이도

보통10점 중 4점

유형
세그먼트 트리, 분할 정복
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 a_1,a_2,...,a_Na\_1, a\_2, ..., a\_N이 주어졌을 때, 다음 쿼리를 수행하는 프로그램을 작성해보자.

  • 1 k x: a_ka\_k를 xx로 바꾼다.
  • 2 l r: 구간 [l,r][l, r]의 최대 상승 값을 출력한다. 구간 [l,r][l, r]의 최대 상승 값은 다음과 같이 정의한다. max⁡(a_j−a_i) (l≤i≤j≤r)\max(a\_j-a\_i)\ (l\le i\le j \le r)

입력

첫째 줄에 수열의 길이 N(1≤N≤100 000)N(1 \le N \le 100\ 000)이 주어진다.

둘째 줄에 수열의 원소 a_1,a_2,...,a_Na\_1, a\_2, ..., a\_N이 주어진다. 수열의 ii번째 원소 a_ia\_i는 정수이며 −109≤a_i≤109-10^9 \le a\_i \le 10^9이다.

셋째 줄에 쿼리의 개수 Q(1≤Q≤100 000)Q(1 \le Q \le 100\ 000)가 주어진다.

넷째 줄부터 QQ개의 줄에 쿼리가 주어진다.

쿼리는 세 정수로 이루어져 있으며, 1  k  x(1≤k≤N,−109≤x≤109)1\ \ k\ \ x(1 \le k \le N, -10^9 \le x \le 10^9) 또는 2  l  r(1≤l≤r≤N)2\ \ l\ \ r(1 \le l \le r \le N)이다.

2번 쿼리는 적어도 하나 주어진다.

예제2

  1. 예제 1

    입력
    5
    4 2 3 1 5
    4
    2 1 4
    2 2 5
    1 3 2
    2 2 4
    
    예상 출력
    1
    4
    0
    
  2. 예제 2

    입력
    3
    3 1 2
    4
    2 1 3
    2 1 1
    1 3 4
    2 1 3
    
    예상 출력
    1
    0
    3