만드는 중입니다

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

오름차순

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

요약
양의 정수 수열에서 각 질의 구간의 원소에 2를 곱해 구간을 오름차순으로 만드는 최소 연산 횟수를 구하는 문제입니다.
난이도

보통10점 중 7점

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

문제

길이 MM인 양의 정수열 X1,…,XMX_1, \dots, X_M이 주어진다. 이 수열을 오름차순으로 만들어 보자. 수열 X1,…,XMX_1, \dots, X_M이 오름차순이라는 것은 각 ii (1≤i≤M−11 \le i \le M-1)에 대해 Xi≤Xi+1X_i \le X_{i+1}이 성립한다는 뜻이다.

수열 XX를 오름차순으로 만들기 위해 다음 연산을 몇 번이든 반복해서 적용할 수 있다.

  • 어떤 ii (1≤i≤M1 \le i \le M)를 골라 XiX_i에 22를 곱한다.

XX를 오름차순으로 만드는 데 필요한 연산의 최소 횟수를 f(X)f(X)라고 하자.

길이 NN의 양의 정수열 A1,…,ANA_1, \dots, A_N과 쿼리 QQ개가 주어진다. 각 쿼리는 1≤l≤r≤N1 \le l \le r \le N을 만족하는 정수 ll, rr로 주어진다. 그 쿼리의 답은 f(Al,…,Ar)f(A_l, \dots, A_r)이다. 여기서 Al,…,ArA_l, \dots, A_r은 AA의 ll번째 원소부터 rr번째 원소까지로 이루어진 연속 부분 수열이다.

각 쿼리의 답을 구하라.

입력

첫 번째 줄에 NN과 QQ가 공백으로 구분되어 주어진다.

두 번째 줄에 A1,…,ANA_1, \dots, A_N이 공백으로 구분되어 주어진다.

이후 QQ개의 줄에 걸쳐 각 쿼리가 ll과 rr의 순서로 공백으로 구분되어 주어진다.

출력

QQ개의 줄에 걸쳐 쿼리의 답을 입력 순서대로 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤N≤2500001 \le N \le 250000
  • 1≤Q≤2500001 \le Q \le 250000
  • 1≤Ai≤1091 \le A_i \le 10^9 (1≤i≤N1 \le i \le N)
  • 모든 쿼리에 대해 1≤l≤r≤N1 \le l \le r \le N

예제2

  1. 예제 1

    입력
    10 5
    5 2 7 3 2 9 6 3 3 5
    3 9
    1 10
    1 8
    2 4
    8 9
    
    예상 출력
    14
    27
    19
    2
    0
    
  2. 예제 2

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