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

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

ASM – 아벨 모래 더미 모형

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

요약
격자에 모래알을 하나씩 떨어뜨리고 임계 높이를 넘는 칸이 있으면 이웃으로 무너뜨리기를 반복해, 가장자리로 빠지는 알을 버리면서 최종 안정 상태를 구한다.
난이도

보통10점 중 5점

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

문제

모래 더미를 모형화하는 것은 통계 물리학의 흥미로운 문제이다. 이미 쌓여 있는 더미 위에 모래알 하나를 떨어뜨리면 대개 그 알갱이는 그대로 붙어 있거나 몇 알이 흘러내리는 데 그친다. 그러나 가끔은 알갱이 하나를 더 얹는 것만으로 거대한 모래 사태가 일어나기도 한다.

이를 간단하게 모형화한 것이 아벨 모래 더미 모형(Abelian Sandpile Model)이다. 이 모형에서 모래 더미는 2차원 격자로 표현되며, 각 격자 칸에는 높이(그 칸에 쌓인 모래알의 수)가 정해져 있다. 어떤 칸에 알갱이를 하나 떨어뜨리면 그 칸의 높이가 1 증가한다. 만약 어떤 칸의 높이가 정해진 임계 높이보다 커지면 그 칸이 무너진다. 무너지는 칸은 높이가 4만큼 줄고, 상하좌우로 인접한 네 칸의 높이가 각각 1씩 늘어난다. 이 과정에서 인접한 칸이 임계 높이를 넘게 되면 그 칸들도 잇따라 무너지며, 모든 칸이 다시 안정될 때까지 이 과정이 계속된다. 격자 밖으로 나가는 모래알은 사라진다.

처음 모래 더미와 알갱이를 떨어뜨리는 위치들이 주어질 때, 최종적으로 안정된 모래 더미를 구하여라.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.

  • 첫 줄에 네 정수 yy, xx, nn, hh가 주어진다. 이때 1≤y,x≤1001 \le y, x \le 100, 0≤n≤1000 \le n \le 100, 3≤h≤93 \le h \le 9이며, 각각 격자의 세로 길이, 가로 길이, 떨어뜨리는 알갱이의 수, 임계 높이를 뜻한다.
  • 이어서 yy개의 줄에 각각 0부터 9까지의 문자 xx개가 주어지며, 이는 처음 모래 더미의 높이를 나타낸다. 처음 높이는 모두 임계 높이 이하이다.
  • 이어서 nn개의 줄에 각각 두 정수 yiy_i, xix_i가 주어진다(1≤yi≤y1 \le y_i \le y, 1≤xi≤x1 \le x_i \le x). 이는 알갱이를 떨어뜨리는 위치(행, 열, 1부터 시작)를 나타낸다.

출력

각 테스트 케이스마다 yy개의 줄을 출력한다. 각 줄에는 0부터 9까지의 문자 xx개를 출력하며, 이는 최종 모래 더미의 높이를 나타낸다.

예제1

  1. 예제 1

    입력
    3
    3 4 1 5
    1023
    2344
    0000
    2 3
    3 4 1 4
    1023
    2344
    0000
    2 3
    7 7 1 9
    9999999
    9999999
    9999999
    9999999
    9999999
    9999999
    9999999
    4 4
    
    예상 출력
    1023
    2354
    0000
    1034
    2421
    0011
    7999997
    9799979
    9979799
    9996999
    9979799
    9799979
    7999997