ASM – 아벨 모래 더미 모형
시간 제한1초메모리 제한128 MB
격자에 모래알을 하나씩 떨어뜨리고 임계 높이를 넘는 칸이 있으면 이웃으로 무너뜨리기를 반복해, 가장자리로 빠지는 알을 버리면서 최종 안정 상태를 구한다.
문제
모래 더미를 모형화하는 것은 통계 물리학의 흥미로운 문제이다. 이미 쌓여 있는 더미 위에 모래알 하나를 떨어뜨리면 대개 그 알갱이는 그대로 붙어 있거나 몇 알이 흘러내리는 데 그친다. 그러나 가끔은 알갱이 하나를 더 얹는 것만으로 거대한 모래 사태가 일어나기도 한다.
이를 간단하게 모형화한 것이 아벨 모래 더미 모형(Abelian Sandpile Model)이다. 이 모형에서 모래 더미는 2차원 격자로 표현되며, 각 격자 칸에는 높이(그 칸에 쌓인 모래알의 수)가 정해져 있다. 어떤 칸에 알갱이를 하나 떨어뜨리면 그 칸의 높이가 1 증가한다. 만약 어떤 칸의 높이가 정해진 임계 높이보다 커지면 그 칸이 무너진다. 무너지는 칸은 높이가 4만큼 줄고, 상하좌우로 인접한 네 칸의 높이가 각각 1씩 늘어난다. 이 과정에서 인접한 칸이 임계 높이를 넘게 되면 그 칸들도 잇따라 무너지며, 모든 칸이 다시 안정될 때까지 이 과정이 계속된다. 격자 밖으로 나가는 모래알은 사라진다.
처음 모래 더미와 알갱이를 떨어뜨리는 위치들이 주어질 때, 최종적으로 안정된 모래 더미를 구하여라.
입력
첫째 줄에 테스트 케이스의 개수 가 주어진다. 각 테스트 케이스의 형식은 다음과 같다.
- 첫 줄에 네 정수 , , , 가 주어진다. 이때 , , 이며, 각각 격자의 세로 길이, 가로 길이, 떨어뜨리는 알갱이의 수, 임계 높이를 뜻한다.
- 이어서 개의 줄에 각각
0부터9까지의 문자 개가 주어지며, 이는 처음 모래 더미의 높이를 나타낸다. 처음 높이는 모두 임계 높이 이하이다. - 이어서 개의 줄에 각각 두 정수 , 가 주어진다(, ). 이는 알갱이를 떨어뜨리는 위치(행, 열, 1부터 시작)를 나타낸다.
출력
각 테스트 케이스마다 개의 줄을 출력한다. 각 줄에는 0부터 9까지의 문자 개를 출력하며, 이는 최종 모래 더미의 높이를 나타낸다.