체스판 위의 공

면접 대비

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

요약
R×C 체스판의 각 칸에 서로 다른 정수가 적혀 있고, 공은 인접한 8칸 중 가장 작은 수가 적힌 칸으로 계속 이동하다가 주변보다 작은 칸에서 멈춘다. 각 칸에 최종적으로 몇 개의 공이 남는지 구한다.
난이도

보통10점 중 6점

유형
그래프, 동적 계획법, DFS, 행렬
정답자
아직 제출이 없습니다

문제

크기가 R×C인 체스판이 있고, 체스판의 각 칸에는 정수가 하나씩 적혀 있다. 체스판에 적혀 있는 정수는 모두 서로 다르다.

체스판의 각 칸 위에 공을 하나씩 놓는다. 이제 공은 다음 규칙에 따라 자동으로 움직인다.

  • 인접한 8방향(가로, 세로, 대각선)에 적힌 모든 정수가 현재 칸에 적힌 수보다 크면 이동을 멈춘다.
  • 그 외의 경우에는 가장 작은 정수가 있는 칸으로 공이 이동한다.

공의 크기는 매우 작아서 체스판의 한 칸 위에 여러 개의 공이 있을 수 있다. 체스판의 상태가 주어진다. 공이 더 이상 움직이지 않을 때, 각 칸에 공이 몇 개 있는지 구해 보자.

입력

첫째 줄에 체스판의 크기 R, C가 주어진다. 둘째 줄부터 R개의 줄에 체스판에 적혀 있는 정수가 주어진다.

출력

총 R개의 줄에 걸쳐서 체스판에 적힌 정수를 출력한다.

제한

  • 1 ≤ R, C ≤ 500
  • 0 ≤ 체스판에 적힌 정수 ≤ 300,000

예제3

  1. 예제 1

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

    입력
    1 6
    10 20 3 4 5 6
    
    예상 출력
    1 0 5 0 0 0
    
  3. 예제 3

    입력
    4 4
    20 2 13 1
    4 11 10 35
    3 12 9 7
    30 40 50 5
    
    예상 출력
    0 4 0 4
    0 0 0 0
    4 0 0 0
    0 0 0 4