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

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

정원사

시간 제한3초메모리 제한128 MB

요약
시간에 따라 자라는 식물을 심고, h보다 큰 식물을 구간에서 뽑고, 구간의 식물 수를 세는 연산을 처리한다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 이분 탐색, 정렬, 구현
정답자
아직 제출이 없습니다

문제

온조는 정원 NN개를 가꾸는 정원사이다. 처음에는 어느 정원에도 식물이 심어져 있지 않고, 정원 하나에 심을 수 있는 식물의 수에는 제한이 없다. 모든 식물은 하루에 kk만큼 자란다. 즉, 높이가 hh인 식물을 xx번째 날에 심었다면 yy번째 날의 높이는 h+k(y−x)h + k(y - x)이다. 온조는 작업 MM개를 수행해 정원 NN개를 가꾸려고 한다.

작업은 세 종류이다.

  • 1 t x h: tt번째 날에 xx번째 정원에 높이가 hh인 식물을 하나 심는다.
  • 2 t l r h: tt번째 날에 ll번째 정원부터 rr번째 정원까지 심어져 있는 식물 중에서 높이가 hh를 넘는 것을 모두 뽑아낸다. 높이가 hh와 같은 식물은 그대로 둔다.
  • 3 t l r: tt번째 날에 ll번째 정원부터 rr번째 정원까지 심어져 있는 식물의 수를 출력한다.

온조는 솜씨 좋은 정원사라서 첫 번째 작업과 두 번째 작업은 쉽게 해내지만, 수학에 약해 세 번째 작업은 버거워한다. 세 번째 작업의 답을 대신 구해 주자.

입력

첫째 줄에 정원의 수 NN (1≤N≤1051 \le N \le 10^5), 온조와 당신이 수행할 작업의 수 MM (1≤M≤1061 \le M \le 10^6), 모든 식물이 하루에 자라는 높이 kk (1≤k≤1091 \le k \le 10^9)가 주어진다.

둘째 줄부터 MM개의 줄에 작업의 정보가 날짜가 증가하는 순서로 주어진다. ll, rr, xx는 11 이상 NN 이하이고 l≤rl \le r이며, 나머지 수는 모두 11 이상 10910^9 이하의 자연수이다. 온조는 같은 날에 작업을 두 개 하는 것을 원하지 않으므로, 하루에 수행하는 작업은 최대 하나이다.

출력

세 번째 작업의 답을 한 줄에 하나씩, 입력에 주어진 순서대로 출력한다. 작업 MM개 중에 세 번째 작업이 적어도 하나 있다.

예제3

  1. 예제 1

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

    입력
    2 6 2
    1 1 1 5
    3 2 1 2
    2 3 1 2 9
    3 3000 1 1
    2 3001 1 1 10
    3 3002 1 2
    
    예상 출력
    1
    1
    0
    
  3. 예제 3

    입력
    5 9 3
    1 1 1 10
    1 2 3 10
    1 3 5 10
    3 4 1 5
    3 5 2 4
    2 6 1 3 25
    3 7 1 5
    2 8 1 5 1
    3 9 1 5
    
    예상 출력
    3
    1
    3
    0