생활관 건설하기

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

요약
각 질의 구간에서 모든 값을 정수 하나로 맞추는 비용이 M 이하가 되는 가장 긴 연속 부분 배열의 길이를 구한다.
난이도

어려움10점 중 8점

유형
분할 정복, 동적 계획법, 그리디, 이분 탐색
정답자
아직 제출이 없습니다

문제

최근 생활관 건물이 무너져 내리고 있다는 보고를 받은 중대장 만식이는, 하루빨리 부대의 새로운 생활관을 건설하고자 한다. 부대 내에 생활관을 건설할 부지를 찾아본 결과, 11번 땅부터 NN번 땅까지 길이 11의 땅이 왼쪽부터 오른쪽까지 일렬로 나열되어 있는 오래된 부지를 발견하였다.

부지 내에 생활관은 단 한 채만 지을 수 있으며, 높이가 동일한 연속한 번호의 땅에 걸쳐 건설해야 한다. 그러나, 오랫동안 방치된 부지였던 만큼 땅의 높이가 제멋대로였다! 따라서 만식이는 부대 내의 병사들을 차출하여 땅의 높이를 같게 만드는 땅 고르기 작업을 진행하고자 한다. ii번 땅의 높이는 h_ih\_i이며, 각 땅의 높이를 xx만큼 높이거나 낮추기 위해서는 x2x^2명의 병사가 해당 땅에서 작업을 진행해야 한다. 단, 각 땅의 높이를 높이거나 낮출 때는 반드시 정수만큼만 바꿀 수 있다. 현재 만식이네 부대의 병사 수는 MM명뿐이었기에, 만식이는 최대 MM명의 병사만을 작업에 투입하여 생활관을 건설할 수 있는 땅의 길이를 최대화하고자 한다.

그러나 작업에 들어가기 직전, 본부에서 부지 내에 생활관을 건설할 수 있는 땅의 범위를 제한하는 공문이 내려왔다! 공문의 내용은 부지 내의 ll번 땅부터 rr번 땅까지 구간 \[l,r]\[l, r] 내부의 땅에만 생활관을 건설할 수 있다는 것이었는데, 공문의 숫자가 깨져서 내려오는 바람에 ll과 rr을 정확히 읽을 수 없었다. 공문 재발송을 요구하는 시간을 기다릴 수 없었던 만식이는, 미리 QQ개의 구간 \[l_j,r_j]\[l\_j, r\_j]에 대해 생활관을 건설할 수 있는 땅의 최대 길이를 구하고자 한다. 만식이를 위해, QQ개의 질문에 답해주자!

입력

첫 번째 줄에 부지의 길이 NN과 부대 내의 병사 수 MM이 공백으로 구분되어 정수로 주어진다. (1≤N≤500,000;(1\leq N\leq 500\\,000; 1≤M≤1018)1\leq M\leq 10^{18})

두 번째 줄에 각 땅의 높이 h_1,h_2,⋯ ,h_Nh\_1, h\_2, \cdots, h\_N이 공백으로 구분되어 정수로 주어진다. (1≤h_i≤1,000,000)(1\leq h\_i\leq 1\\,000\\,000)

세 번째 줄에 주어지는 질문의 개수 QQ가 주어진다. (1≤Q≤500,000)(1\leq Q\leq 500\\,000)

이후 QQ줄에 걸쳐, 각 줄에 생활관을 건설할 수 있는 부지의 범위 l_jl\_j와 r_jr\_j가 공백으로 구분되어 정수로 주어진다. (1≤l_j≤r_j≤N)(1\leq l\_j\leq r\_j\leq N)

출력

QQ줄에 걸쳐, 각 줄에 주어진 구간에 대해 생활관을 건설할 수 있는 땅의 최대 길이를 출력한다.

예제1

  1. 예제 1

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