아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

낼 수 없는 최소 금액

시간 제한4초메모리 제한512 MB

요약
각 구간 쿼리마다 그 구간에 속한 동전들의 부분집합 합으로 만들 수 없는 가장 작은 양의 금액을 구한다.
난이도

어려움10점 중 9점

유형
그리디, 정렬, 세그먼트 트리, 이분 탐색
정답자
아직 제출이 없습니다

문제

보리스는 동전 nn개를 모았다. 동전을 한 줄로 늘어놓았고, 줄에서 ii번째 동전의 가치는 aia_i이다.

보리스는 여행을 떠나려 하지만 시간이 부족해서, 줄에서 서로 붙어 있는 동전 구간 하나를 통째로 들고 가려고 한다.

보리스는 질문 여러 개에 답하고 싶다. 각 질문마다 lil_i번째 동전부터 rir_i번째 동전까지 들고 갔을 때, 거스름돈을 받지 않고는 낼 수 없는 최소 금액이 궁금하다. 정확히 말하면 lil_i번째부터 rir_i번째까지의 동전 중에서 어떻게 골라도 가치의 합이 zz가 되지 않는, 가장 작은 양의 정수 zz를 구해야 한다.

입력

첫째 줄에 동전의 개수 nn과 질문의 개수 mm이 주어진다 (1≤n,m≤1500001 \le n, m \le 150000). 둘째 줄에 동전의 가치 aia_i가 nn개 주어진다 (1≤ai≤1091 \le a_i \le 10^9).

다음 mm개의 줄에 질문이 하나씩 주어진다. 각 줄에는 보리스가 들고 가는 동전 구간의 시작과 끝을 뜻하는 정수 lil_i와 rir_i가 주어진다 (1≤li≤ri≤n1 \le l_i \le r_i \le n).

출력

각 질문마다 lil_i번째 동전부터 rir_i번째 동전까지로는 거스름돈 없이 낼 수 없는 최소 금액을 한 줄에 하나씩 출력한다.

예제5

  1. 예제 1

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

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

    입력
    1 1
    1000000000
    1 1
    
    예상 출력
    1
  4. 예제 4

    입력
    10 5
    1 1 1 1 1 1 1 1 1 1
    1 10
    1 1
    3 7
    5 10
    10 10
    
    예상 출력
    11
    2
    6
    7
    2
  5. 예제 5

    입력
    10 6
    1 2 4 8 16 32 64 128 256 512
    1 10
    1 5
    2 10
    4 4
    1 1
    6 9
    
    예상 출력
    1024
    32
    1
    1
    2
    1