만드는 중입니다

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

물고기 3

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

요약
각 구간의 물고기가 목표 지능 C_i에 도달하도록 A 먹이를 최소 몇 개 넣어야 하는지 구하고, 불가능하면 -1을 출력합니다.
난이도

어려움10점 중 8점

유형
그리디, 수학, 배열
정답자
아직 제출이 없습니다

문제

JOI-kun은 큰 수조에서 물고기 NN마리를 기르고 있다. 각 물고기에는 11부터 NN까지 번호가 붙어 있다.

JOI-kun에게는 A와 B 두 종류의 먹이가 있으며, 두 먹이 모두 충분히 있다. 수조에 먹이를 한 개 넣으면 물고기 한 마리가 정확히 그 먹이를 먹는다. 어떤 물고기든 먹을 수 있다. 먹이 종류와 먹은 물고기에 따라 물고기의 지능은 다음과 같이 변한다.

  • 물고기 kk (1≤k≤N1 \le k \le N)가 A 먹이를 한 개 먹으면, 물고기 kk의 지능이 정확히 DD만큼 증가한다.
  • 물고기 kk (1≤k≤N1 \le k \le N)가 B 먹이를 한 개 먹으면, 번호가 kk 이상인 모든 물고기의 지능이 각각 정확히 11씩 증가한다.

처음에는 모든 물고기의 지능이 00이다. JOI-kun은 물고기 ii (1≤i≤N1 \le i \le N)의 지능을 이상적인 지능 CiC_i와 같게 만들고 싶어 하지만, 항상 가능한 것은 아니다.

JOI-kun에게는 QQ개의 질문이 있다. jj번째 질문은 다음과 같다. 모든 지능이 00인 상태에서 먹이를 넣는 행동을 0번 이상 반복하여, 물고기 Lj,Lj+1,…,RjL_j, L_j+1, \dots, R_j의 지능을 모두 이상적인 값과 정확히 같게 만들 수 있는가? 가능하다면, 수조에 넣어야 하는 A 먹이의 최소 개수는 얼마인가?

물고기 정보와 질문 정보가 주어졌을 때, 이 질문들에 답하는 프로그램을 작성하라.

입력

첫째 줄에 NN과 DD가 주어진다.

둘째 줄에 C1,C2,⋯ ,CNC_1, C_2, \cdots, C_N이 주어진다.

셋째 줄에 QQ가 주어진다.

이후 QQ개의 줄에 각각 LjL_j와 RjR_j가 주어진다.

NN DD

C1C_1 C2C_2 ⋯\cdots CNC_N

QQ

L1L_1 R1R_1

L2L_2 R2R_2

⋮\vdots

LQL_Q RQR_Q

출력

QQ개의 줄을 출력한다. jj번째 줄에는 물고기 Lj,…,RjL_j, \dots, R_j의 지능을 이상적인 값과 정확히 같게 만드는 데 필요한 A 먹이의 최소 개수를 출력한다. 불가능하면 -1을 출력한다.

제한

  • 1≤N≤300 0001 \le N \le 300\,000.
  • 1≤Q≤300 0001 \le Q \le 300\,000.
  • 1≤D≤10121 \le D \le 10^{12}.
  • 0≤Ci≤10120 \le C_i \le 10^{12} (1≤i≤N1 \le i \le N).
  • 1≤Lj≤Rj≤N1 \le L_j \le R_j \le N (1≤j≤Q1 \le j \le Q).
  • 주어지는 모든 값은 정수이다.

예제4

  1. 예제 1

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

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

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

    입력
    6 3
    16 14 13 8 6 5
    4
    1 4
    2 5
    3 3
    1 6
    
    예상 출력
    9
    8
    0
    -1