만드는 중입니다

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

역사를 숫자로

시간 제한2초메모리 제한1024 MB

요약
연도별 추정치 n개에 구간 덧셈 갱신이 주어질 때, 각 질의 구간에서 연속 같은 값을 하나로 줄인 수열의 극소값이 엄격히 증가하는지 판별합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 배열, 구현
정답자
아직 제출이 없습니다

문제

알고리즘과 자료구조는 예술, 공예, 과학의 여러 분야에서 쓰인다. 이 문제는 역사 분야의 응용 한 가지를 다룬다.

역사학자들이 어느 도시의 nn년 동안 도시 발전을 연구하고 있다. 도시 발전은 도시 발전 지수(UDI)라는 종합 지표로 잰다. UDI는 음수를 포함한 정수 값을 가질 수 있다. 각 해 ii에는 UDI의 초기 추정값 eie_i가 있다. 새로운 문서와 증거가 발견되면 이 추정값은 수정된다. 역사학자들은 sjs_j년부터 fjf_j년까지(양 끝 포함) 각 해의 UDI 추정값에 djd_j를 더할 수 있다.

역사학자들은 일정 기간 동안 UDI가 증가해 왔는지 알고 싶어 한다. 표준 정의 대신 다음 절차를 쓴다.

  • 연속으로 같은 수가 나오면 하나로 합친다. 예를 들어 1 1 2 2 2 3 3 3은 1 2 3이 된다.
  • 변환된 UDI 수열에서 극소점들의 수열이 엄격하게 증가하면, 해 ii부터 해 jj까지 UDI가 증가한 것으로 본다. 원소가 양쪽 이웃보다 작으면 극소점이다(첫 원소와 마지막 원소는 이웃이 하나뿐이다).

이 문제에서는 UDI 추정값을 저장하고, 갱신 요청과 확인 요청을 처리하는 시스템을 구현한다.

입력

첫 줄에 기간의 길이를 나타내는 정수 nn (1≤n≤3⋅1051 \le n \le 3 \cdot 10^5)이 주어진다.

둘째 줄에 공백으로 구분된 정수 eie_i (−108≤ei≤108-10^8 \le e_i \le 10^8) nn개가 주어진다.

셋째 줄에 정수 mm (1≤m≤3⋅1051 \le m \le 3 \cdot 10^5)이 주어진다. 이어지는 mm개의 줄은 다음 요청 중 하나다.

  • update에 이어 정수 sjs_j, fjf_j, djd_j (1≤sj≤fj≤n1 \le s_j \le f_j \le n, ∣dj∣≤108|d_j| \le 10^8)가 주어진다.
  • check에 이어 정수 ss, ff (1≤s≤f≤n1 \le s \le f \le n)가 주어진다.

출력

check 요청마다 해당 기간에 UDI가 증가했으면 YES, 그렇지 않으면 NO를 출력한다.

예제2

  1. 예제 1

    입력
    5
    10 4 10 6 10
    5
    check 1 5
    update 2 3 1
    check 1 5
    update 2 3 1
    check 1 5
    
    예상 출력
    YES
    YES
    NO
    
  2. 예제 2

    입력
    8
    10 -5 -5 -5 11 6 6 12
    1
    check 1 8
    
    예상 출력
    YES