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

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

마법사 상어와 파이어스톰

면접 대비

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

요약
Q번 반복하며 격자를 2^L x 2^L 블록으로 나눠 각 블록을 시계 방향으로 90도 회전시키고, 얼음이 있는 인접 칸이 3개 미만인 칸의 얼음을 1 줄인다. 모든 시전 후 남은 얼음의 합과 가장 큰 연결 덩어리의 크기를 구한다.
난이도

보통10점 중 6점

유형
구현, 시뮬레이션, 행렬, BFS
정답자
아직 제출이 없습니다

문제

마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N×2N2^N \times 2^N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r,c)(r, c)는 격자의 rr행 cc열을 의미하고, A[r][c]A[r][c]는 (r,c)(r, c)에 있는 얼음의 양을 의미한다. A[r][c]A[r][c]가 0인 경우 얼음이 없는 것이다.

파이어스톰을 시전하려면 시전할 때마다 단계 LL을 결정해야 한다. 파이어스톰은 먼저 격자를 2L×2L2^L \times 2^L 크기의 부분 격자로 나눈다. 그 후, 모든 부분 격자를 시계 방향으로 90도 회전시킨다. 이후 얼음이 있는 칸 3개 또는 그 이상과 인접해있지 않은 칸은 얼음의 양이 1 줄어든다. (r,c)(r, c)와 인접한 칸은 (r−1,c)(r-1, c), (r+1,c)(r+1, c), (r,c−1)(r, c-1), (r,c+1)(r, c+1)이다. 아래 그림의 칸에 적힌 정수는 칸을 구분하기 위해 적은 정수이다.

마법을 시전하기 전L=1L = 1L=2L = 2

마법사 상어는 파이어스톰을 총 QQ번 시전하려고 한다. 모든 파이어스톰을 시전한 후, 다음 2가지를 구해보자.

  1. 남아있는 얼음 A[r][c]A[r][c]의 합
  2. 남아있는 얼음 중 가장 큰 덩어리가 차지하는 칸의 개수

얼음이 있는 칸이 얼음이 있는 칸과 인접해 있으면, 두 칸을 연결되어 있다고 한다. 덩어리는 연결된 칸의 집합이다.

입력

첫째 줄에 NN과 QQ가 주어진다. 둘째 줄부터 2N2^N개의 줄에는 격자의 각 칸에 있는 얼음의 양이 주어진다. rr번째 줄에서 cc번째 주어지는 정수는 A[r][c]A[r][c]이다.

마지막 줄에는 마법사 상어가 시전한 단계 L1,L2,…,LQL_1, L_2, \dots, L_Q가 순서대로 주어진다.

출력

첫째 줄에 남아있는 얼음 A[r][c]A[r][c]의 합을 출력하고, 둘째 줄에 가장 큰 덩어리가 차지하는 칸의 개수를 출력한다. 단, 덩어리가 없으면 0을 출력한다.

제한

  • 2≤N≤62 \le N \le 6
  • 1≤Q≤1,0001 \le Q \le 1,000
  • 0≤A[r][c]≤1000 \le A[r][c] \le 100
  • 0≤Li≤N0 \le L_i \le N

예제5

  1. 예제 1

    입력
    3 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1
    
    예상 출력
    284
    64
    
  2. 예제 2

    입력
    3 2
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2
    
    예상 출력
    280
    64
    
  3. 예제 3

    입력
    3 5
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 0 3 2
    
    예상 출력
    268
    64
    
  4. 예제 4

    입력
    3 10
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 0 3 2 1 2 3 2 3
    
    예상 출력
    248
    62
    
  5. 예제 5

    입력
    3 10
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 4 5 6 7 8
    8 7 6 5 4 3 2 1
    1 2 3 1 2 3 1 2 3 1
    
    예상 출력
    246
    60