만드는 중입니다

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

고장 난 주소 버스

면접 대비

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

요약
메모리 값과 질의마다 주어진 정상 배선 마스크가 있을 때, 설정된 비트가 모두 마스크 안에 드는 주소의 값을 합산합니다.
난이도

보통10점 중 5점

유형
비트 연산, 동적 계획법
정답자
아직 제출이 없습니다

문제

Juku의 컴퓨터 메모리에는 NN개의 셀이 있으며, 주소는 0…N−10 \ldots N-1의 수로 표시된다. 셀의 값을 읽으려면 먼저 그 셀의 주소를 주소 버스에 올려야 한다. 주소 버스는 16개의 병렬 배선으로 이루어져 있고, 주소의 각 비트마다 배선이 하나씩 대응한다. 예를 들어 주소 1919의 값을 읽으려면 1919를 이진수로 나타낸다. 19=24+21+20=(10011)219 = 2^4 + 2^1 + 2^0 = (10011)_2이므로 4번, 1번, 0번 배선에 전압을 건다. 주소 00을 읽을 때는 어떤 배선에도 전압을 걸지 않는다.

일부 배선은 고장 나 있다. 고장 난 배선에 전압을 걸면 메모리 칩이 이를 인식하지 못한다. 예를 들어 0번 배선이 고장 나면 7=22+21+207 = 2^2 + 2^1 + 2^0은 0번 배선에 전압이 필요하므로 읽을 수 없다. 반면 6=22+216 = 2^2 + 2^1은 읽을 수 있다.

메모리의 내용과 정상 배선의 집합이 주어졌을 때, 읽을 수 있는 모든 값의 합을 구하라.

입력

첫 줄에 메모리 값의 개수 NN (1≤N≤2161 \le N \le 2^{16})과 질의의 개수 QQ (1≤Q≤1051 \le Q \le 10^5)가 주어진다. 다음 NN개의 줄에는 0번부터 N−1N-1번 셀의 값이 한 줄에 하나씩 주어진다. 각 값은 10910^9 이하의 음이 아닌 정수이다. 마지막 QQ개의 줄에는 질의가 주어진다. 각 질의는 정상 배선에만 전압을 걸었을 때 얻는 주소 XiX_i (0≤Xi<2160 \le X_i < 2^{16})이다.

출력

출력은 정확히 QQ개의 줄이어야 한다. 각 줄에는 해당 질의의 답, 즉 정상 배선의 집합이 질의의 XiX_i로 주어졌을 때 읽을 수 있는 값들의 합을 출력한다.

힌트

질의 '0'에서는 모든 배선이 고장 났으므로 주소 0의 값 10만 읽을 수 있다. 질의 '15'에서는 처음 4개의 배선이 정상이므로 모든 값을 읽을 수 있다. 마지막 질의에서는 값 10과 1만 읽을 수 있다.

예제1

  1. 예제 1

    입력
    3 3
    10
    7
    1
    0
    15
    2
    
    예상 출력
    10
    18
    11