만드는 중입니다

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

Weirdtree

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

요약
나무 N그루의 높이를 바꾸는 값 설정, 구간 합 조회, 구간에서 가장 높은 나무를 k번 1씩 깎는 연산을 처리합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 시뮬레이션
정답자
아직 제출이 없습니다

문제

고원의 마녀 아즈사가 이상한 나무로 가득한 정원을 발견했다. 그녀는 친구 라이카와 함께 이 정원을 돌보기로 했다.

정원은 1번부터 N번까지 번호가 매겨진 나무 N그루가 일렬로 늘어선 수열로 볼 수 있다. 각 나무는 음이 아닌 정수 높이를 가진다. 아즈사는 Q개의 항목으로 이루어진 일정표에 따라 시간을 보낸다. 항목은 다음 세 종류 중 하나이다.

첫째, 나무 자르기 단계는 ll, rr, kk로 주어진다. 이 단계에서 아즈사는 다음 kk일 동안 나무를 자른다. 하루에 한 번, 인덱스가 ll 이상 rr 이하인 나무 가운데 높이가 가장 큰 나무를 찾아 그 높이를 11 줄인다. 가장 큰 높이를 가진 나무가 여럿이면 그중 가장 왼쪽 나무를 고른다. 가장 큰 높이가 00이면 그날은 아무 일도 일어나지 않는다.

둘째, 마법 단계는 ii, xx로 주어진다. 인덱스 ii인 나무의 높이를 xx로 바꾼다.

셋째, 나무 조사 단계는 ll, rr로 주어진다. 인덱스가 ll 이상 rr 이하인 나무들의 높이 합을 구한다.

여기서 '이상'과 '이하'는 양 끝을 포함한다. 예를 들어 1부터 5까지의 정수는 1, 2, 3, 4, 5이다.

제한

  • 1≤N,Q≤300 0001 \le N, Q \le 300\,000
  • cut, magic, inspect 함수는 모두 합쳐 정확히 Q번 호출됨이 보장된다.
  • 1≤i≤N1 \le i \le N
  • 0≤x,k,h[i]≤1 000 000 0000 \le x, k, h[i] \le 1\,000\,000\,000
  • 1≤l≤r≤N1 \le l \le r \le N

힌트

첫 번째 단계에서 나무를 3일 동안 자르면, 각 날이 끝난 뒤 나무 높이는 차례로 1, 2, 2, 1, 2, 3; 1, 2, 2, 1, 2, 2; 1, 1, 2, 1, 2, 2이다. 이 값들의 합은 9이며, 이것이 두 번째 단계 조사의 답이다.

세 번째 단계에서 나무를 3일 동안 자르면, 각 날이 끝난 뒤 나무 높이는 차례로 1, 1, 1, 1, 2, 2; 0, 1, 1, 1, 2, 2; 0, 0, 1, 1, 2, 2이다. 이 값들의 합은 6이며, 이것이 네 번째 단계 조사의 답이다.

다섯 번째 단계에서 나무를 1000일 동안 자르면, 날마다 자른 뒤 높이는 0, 0, 0, 1, 2, 2가 된다. 높이가 0인 나무는 잘리지 않기 때문이다. 이 값들의 합은 5이며, 이것이 여섯 번째 단계 조사의 답이다.

일곱 번째 단계에서 첫 번째 나무를 높이 1000까지 키우면 나무 높이는 1000, 0, 0, 1, 2, 2가 된다. 이 값들의 합은 1005이며, 이것이 여덟 번째 단계 조사의 답이다.

아홉 번째 단계에서는 999일 동안 날마다 첫 번째 나무의 높이가 1씩 줄어든다. 단계가 끝나면 나무 높이는 1, 0, 0, 1, 2, 2가 된다. 앞의 다섯 값의 합은 4이며, 이것이 마지막 열 번째 단계 조사의 답이다.

예제1

  1. 예제 1

    입력
    6 10
    1 2 3 1 2 3
    1 1 6 3
    3 1 6
    1 1 3 3
    3 1 6
    1 1 3 1000
    3 1 6
    2 1 1000
    3 1 6
    1 1 3 999
    3 1 5
    
    예상 출력
    9
    6
    5
    1005
    4