만드는 중입니다

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

벨라루스 국립대학교

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

요약
비트마다 주어진 표 c(i, x_i, y_i)로 두 수의 비트를 합치고, A와 B의 모든 쌍 (a, b)에서 나오는 f(a, b) 값의 개수를 구합니다.
난이도

어려움10점 중 9점

유형
비트 연산, 수학, 구현
정답자
아직 제출이 없습니다

문제

벨라루스 국립대학교 학생이라는 것은 그 자체로 자랑스러운 일이다. 알고리즘 이론 수업을 듣는 학생은 기말고사에 응시하기 전에 어려운 문제를 많이 풀어야 한다. 다음은 그중 하나다.

양의 정수 nn과, 각각 0 또는 1일 수 있는 4n4n개의 정수 c(i,j,k)c(i, j, k)가 주어진다 (0≤i<n0 \le i < n, j∈{0,1}j \in \{0, 1\}, k∈{0,1}k \in \{0, 1\}).

0 이상 2n−12^n - 1 이하의 두 정수 xx, yy를 생각하자. x=∑i=0n−1xi⋅2ix = \sum_{i=0}^{n-1} x_i \cdot 2^i, y=∑i=0n−1yi⋅2iy = \sum_{i=0}^{n-1} y_i \cdot 2^i를 각각의 이진 표현이라 하자 (xi,yi∈{0,1}x_i, y_i \in \{0, 1\}). f(x,y)=∑i=0n−1c(i,xi,yi)⋅2if(x, y) = \sum_{i=0}^{n-1} c(i, x_i, y_i) \cdot 2^i로 정의한다. f(x,y)f(x, y) 역시 0 이상 2n−12^n - 1 이하의 정수이다.

두 다중집합 AA, BB가 주어졌을 때, a∈Aa \in A, b∈Bb \in B인 모든 쌍 (a,b)(a, b)에 대해 f(a,b)f(a, b) 값들의 다중집합을 구하라.

입력

첫 줄에 정수 nn (1≤n≤181 \leq n \leq 18)이 주어진다.

둘째 줄에는 4자리 이진 문자열 nn개가 주어진다. ii번째 문자열은 c(i−1,0,0)c(i - 1, 0, 0), c(i−1,0,1)c(i - 1, 0, 1), c(i−1,1,0)c(i - 1, 1, 0), c(i−1,1,1)c(i - 1, 1, 1)의 값을 이 순서대로 담고 있다.

다음 두 줄은 각각 다중집합 AA와 BB를 나타낸다. 다중집합은 2n2^n개의 정수 q0,q1,…,q2n−1q_0, q_1, \ldots, q_{2^n - 1}로 기술되며, qiq_i는 다중집합에 들어 있는 수 ii의 개수이다 (qi≥0q_i \ge 0, ∑qi≤109\sum q_i \leq 10^9). 다중집합에는 이 외의 수가 없다.

출력

2n2^n개의 정수를 한 줄에 출력하라. 각 정수는 결과 다중집합에서 0,1,…,2n−10, 1, \ldots, 2^n - 1 각 수의 개수이다.

힌트

첫 번째 예제에서는 55와 66이 주어진다. xi,yi∈{0,1}x_i, y_i \in \{0, 1\}에 대해 f(x0+2x1+4x2,y0+2y1+4y2)=(x0 OR y0)+2⋅(x1 XOR y1)+4⋅(x2 AND y2)f(x_0 + 2x_1 + 4x_2, y_0 + 2y_1 + 4y_2) = (x_0 \text{ OR } y_0) + 2 \cdot (x_1 \text{ XOR } y_1) + 4 \cdot (x_2 \text{ AND } y_2) 가 성립한다. 따라서 결과 다중집합에 들어 있는 수는 77 하나뿐이다.

예제3

  1. 예제 1

    입력
    3
    0111 0110 0001
    0 0 0 0 0 1 0 0
    0 0 0 0 0 0 1 0
    
    예상 출력
    0 0 0 0 0 0 0 1
    
  2. 예제 2

    입력
    2
    1100 1101
    2 0 2 1
    2 0 2 1
    
    예상 출력
    2 4 3 16
    
  3. 예제 3

    입력
    1
    0000
    142857142 857142857
    998244353 1755646
    
    예상 출력
    999999998000000001 0