만드는 중입니다

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

도로 공사

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

요약
각 구간에서 K칸짜리 주문으로 모든 칸의 높이를 같게 만드는 최소 주문 횟수를 구합니다. 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
배열, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

SciOI시의 시장인 상렬이는 새로운 도로를 건설하려고 한다. 하지만 상렬이가 도로를 지으려는 땅이 너무 울퉁불퉁해서, 땅을 다지는 작업만 몇 년이 걸릴 것으로 예상된다. 도로를 지을 땅은 직선 형태이며, 높이가 같거나 다른 NN개의 조각으로 나뉘어 있다. 도로의 높이는 음수일 수도 있다. 도로의 상태는 각 도로 조각의 높이를 나타내는 길이 NN의 수열 AA로 표현된다.

다행히 마법사인 상렬이는 연속한 KK개 조각의 높이를 같은 값만큼 높이거나 낮추는 마법을 쓸 수 있다. 이때 KK는 고정되어 있다.

예를 들어 N=5N = 5이고 K=2K = 2이며 도로의 상태가 다음과 같다고 하자.

3 5 6 2 9

상렬이가 세 번째와 네 번째 조각의 높이를 2만큼 높이는 마법을 쓰면 도로의 상태는 다음과 같이 바뀐다.

3 5 8 4 9

또한 상렬이의 마법은 도로의 경계를 벗어나서도 쓸 수 있으며, 범위를 넘어간 부분의 마법은 무시된다. 예를 들어 K=3K = 3일 때 경계를 벗어나 0번째, 첫 번째, 두 번째 조각에 마법을 쓰는 것이 가능하다. 이때 0번째 조각에 대한 마법은 무시되어, 첫 번째와 두 번째 조각에만 마법을 쓰는 것이 된다.

상렬이는 도로를 정확히 어디에 지을지 아직 정하지 못했지만, 주어진 도로의 어떤 연속된 구간에 짓게 될 것은 확실하다. 구간에 도로를 짓게 된다면, 마법을 써서 그 구간에 속한 도로 조각들의 높이를 모두 같게 만들어야 한다. 그러나 마법을 너무 많이 쓰면 주변에 마법사라는 사실이 들킬 수 있으므로, 상렬이는 최소한의 횟수로 마법을 쓰고자 한다.

상렬이가 생각하는 도로를 지을 구간 후보는 총 QQ개이다. 각 후보에 대해 상렬이가 최소로 써야 하는 마법의 수를 구하는 프로그램을 작성하여라. 모든 쿼리는 독립적이다.

입력

첫 줄에는 NN, KK, 그리고 도로를 건설할 구간의 후보 수 QQ가 주어진다. (1≤K≤N≤100,0001 \le K \le N \le 100{,}000, 1≤Q≤100,0001 \le Q \le 100{,}000)

둘째 줄에는 도로의 상태를 나타내는 길이 NN의 수열 AA가 주어진다. (−109≤Ai≤109-10^9 \le A_i \le 10^9)

셋째 줄부터 QQ개의 줄에는 도로를 건설할 구간의 후보가 각각 주어진다. ii번째 후보는 두 정수 lil_i, rir_i로 표현되며, 도로의 lil_i번째 조각부터 rir_i번째 조각까지로 이루어진 구간임을 의미한다. (1≤li≤ri≤N1 \le l_i \le r_i \le N)

출력

QQ개의 줄에, 각 도로 구간 후보에서 상렬이가 최소로 사용해야 하는 마법의 수를 한 줄에 하나씩 출력한다. 마법으로 도로 조각들의 높이를 원하는 대로 만들 수 없다면, −1-1을 출력한다.

예제1

  1. 예제 1

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