만드는 중입니다

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

모티가 식료품을 사다

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

요약
상품 n개의 가격이 주어질 때, 각 질의마다 k개를 순서대로 고른 경우 중 총합이 l 이상 r 이하인 경우의 수를 786433으로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

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

문제

릭과 모티가 가게에 왔다. 짐작했겠지만 릭은 모티에게 여러 가지 과제를 내주는 것을 좋아하고, 이번에도 예외가 아니다. 모티는 상품 kk개를 사는 방법의 수를 세야 한다. 가게에는 상품이 총 nn개 있고, ii번째 상품의 가격은 cic_i이다. 릭은 두 수 ll과 rr을 모티에게 총 qq번 준다. 모티는 매번 구입한 상품의 총 가격이 ll 이상 rr 이하가 되도록 상품 kk개를 고르는 방법이 몇 가지인지 답해야 한다.

구매는 인덱스 집합 {i1,i2,…,ik}\{i_1, i_2, \dots, i_k\}로 나타낸다. 여기서 iji_j는 jj번째로 산 상품의 번호이다. 두 구매 AA와 BB는 Ad≠BdA_d \neq B_d인 인덱스 dd가 있으면 서로 다른 구매로 본다. 따라서 (1,2)(1, 2)와 (2,1)(2, 1)은 서로 다른 두 구매이다. 같은 상품을 여러 번 살 수도 있다.

입력

첫 줄에 세 정수 nn, kk, qq가 주어진다 (1≤n,q≤1051 \leq n, q \leq 10^5, 1≤k≤1051 \leq k \leq 10^5). 둘째 줄에는 상품 가격 cic_i가 nn개 주어진다 (1≤ci≤5⋅1041 \leq c_i \leq 5 \cdot 10^4). 이어지는 qq개의 줄에는 각각 정수 ll과 rr이 주어진다 (1≤l≤r≤5⋅1041 \leq l \leq r \leq 5 \cdot 10^4).

출력

릭이 낸 qq개의 질문에 대한 답을 한 줄에 하나씩 출력한다. 답이 매우 클 수 있으므로 786433786433으로 나눈 나머지를 출력한다.

예제2

  1. 예제 1

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

    입력
    2 2 1
    1 1
    1 10000
    
    예상 출력
    4