만드는 중입니다

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

물병 잡기

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

요약
시간 T에 N개의 물병과 재혁 중 위치가 L 이상 R 이하인 것의 개수를 구합니다.
난이도

어려움10점 중 8점

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

문제

재혁이는 특이한 취미가 있다. 그 취미는 시간 TT에 위치가 LL 이상 RR 이하인 모든 물병의 물을 맛보는 것이다. 하지만 제자리에 가만히 앉아 물만 마시던 재혁이는 비만이 걱정되어 움직이기로 했다. 물병들은 자유분방해서 특정 상황이 되면 움직인다.

물병에는 1,2,…,N1, 2, \ldots, N번 번호가 붙어 있고, 번호 ii인 물병의 초기 위치는 −i-i이다. 재혁이의 초기 위치는 00이다. 재혁이와 물병들은 매초 다음 규칙에 따라 움직인다.

  1. 재혁이는 1초마다 오른쪽으로 11씩 움직인다.
  2. 물병은 물이 쏟아질 것을 우려해 함부로 움직이지 않는다. 재혁이가 이동한 후, 물병 11은 재혁이와의 거리가 D1+1D_1+1 이상 차이 나면 (재혁이의 위치) −1-1로 이동한다.
  3. 물병 11의 위치가 정해진 후, 물병 22는 물병 11과의 거리가 D2+1D_2+1 이상 차이 나면 (물병 11의 위치) −1-1로 이동한다. 물병 3,4,…,N3, 4, \ldots, N도 같은 방식으로 순서대로 이동한다. 즉 물병 ii는 물병 i−1i-1과의 거리가 Di+1D_i+1 이상 차이 나면 (물병 i−1i-1의 위치) −1-1로 이동한다.

재혁이는 물을 무지막지하게 마시다가, 시간 TT와 구간 LL, RR이 주어졌을 때 자신이 몇 개의 물병을 잡을 수 있는지 궁금해졌다. 그런데 물을 너무 많이 마신 나머지 재혁이 자신도 물병이라고 착각하기 시작했다. 그러므로 재혁이의 위치가 LL 이상 RR 이하이면 질의의 답에 1을 더해야 한다.

입력

첫 번째 줄에 물병의 개수 NN (1≤N≤500,0001 \le N \le 500{,}000)과 질의의 개수 QQ (1≤Q≤500,0001 \le Q \le 500{,}000)가 주어진다. 다음 NN개의 줄에 DiD_i (1≤Di≤1091 \le D_i \le 10^9)가 주어진다. 다음 QQ개의 줄에 TiT_i, LiL_i, RiR_i (1≤Ti,Li≤1091 \le T_i, L_i \le 10^9, Li≤Ri≤109L_i \le R_i \le 10^9)가 주어진다.

출력

QQ개의 줄에 걸쳐 질의의 답을 출력한다. ii번째 줄에는 시간 TiT_i에 위치가 LiL_i 이상 RiR_i 이하인 물병의 개수를 출력한다.

예제2

  1. 예제 1

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

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