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

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

마법사 상어와 비바라기

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

요약
토러스 형태의 N×N 격자에서 M번의 구름 이동을 시뮬레이션한다. 구름이 이동해 비를 내리고 대각선 칸의 물을 복사한 뒤, 물이 2 이상인 칸에 새 구름을 만들고 마지막에 물의 총합을 출력한다.
난이도

보통10점 중 4점

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

문제

마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 쓸 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기를 크기가 N×N인 격자에서 연습하려고 한다. 격자의 각 칸에는 바구니가 하나씩 있고, 바구니는 칸 전체를 차지한다. 바구니에 담을 수 있는 물의 양에는 제한이 없다. (r, c)는 격자의 r행 c열에 있는 바구니를 뜻하고, A[r][c]는 (r, c)에 있는 바구니에 담겨 있는 물의 양을 뜻한다.

격자의 가장 왼쪽 위 칸은 (1, 1)이고 가장 오른쪽 아래 칸은 (N, N)이다. 마법사 상어는 연습을 위해 1번 행과 N번 행을 이었고, 1번 열과 N번 열도 이었다. 즉, N번 행의 아래에는 1번 행이 있고, 1번 행의 위에는 N번 행이 있다. 1번 열의 왼쪽에는 N번 열이 있고, N번 열의 오른쪽에는 1번 열이 있다.

비바라기를 시전하면 (N, 1), (N, 2), (N-1, 1), (N-1, 2)에 비구름이 생긴다. 구름은 칸 전체를 차지한다. 이제 구름에 이동을 M번 명령하려고 한다. i번째 이동 명령은 방향 di와 거리 si로 이루어져 있다. 방향은 모두 8개이고, 8개의 정수로 나타낸다. 1부터 차례로 ←, ↖, ↑, ↗, →, ↘, ↓, ↙이다. 이동을 명령하면 다음이 순서대로 진행된다.

  1. 모든 구름이 di 방향으로 si칸 이동한다.

  2. 각 구름에서 비가 내려 구름이 있는 칸의 바구니에 담긴 물의 양이 1 늘어난다.

  3. 구름이 모두 사라진다.

  4. 2에서 물이 늘어난 칸 (r, c)에 물복사버그 마법을 시전한다. 물복사버그 마법을 쓰면 대각선 방향으로 거리가 1인 칸에 물이 있는 바구니의 수만큼 (r, c)에 있는 바구니의 물의 양이 늘어난다.

    • 이때는 이동과 달리 경계를 넘어가는 칸은 대각선 방향으로 거리가 1인 칸이 아니다.
    • 예를 들어 (N, 2)에서 인접한 대각선 칸은 (N-1, 1), (N-1, 3)이고, (N, N)에서 인접한 대각선 칸은 (N-1, N-1)뿐이다.
  5. 바구니에 담긴 물의 양이 2 이상인 모든 칸에 구름이 생기고, 물의 양이 2 줄어든다. 이때 구름이 생기는 칸은 3에서 구름이 사라진 칸이 아니어야 한다.

M번의 이동이 모두 끝난 뒤 바구니에 들어 있는 물의 양의 합을 구해 보자.

입력

첫째 줄에 N, M이 주어진다.

둘째 줄부터 N개의 줄에 N개의 정수가 주어진다. r번째 행의 c번째 정수는 A[r][c]를 뜻한다.

다음 M개의 줄에는 이동의 정보 di, si가 순서대로 한 줄에 하나씩 주어진다.

출력

첫째 줄에 M번의 이동이 모두 끝난 뒤 바구니에 들어 있는 물의 양의 합을 출력한다.

제한

  • 2 ≤ N ≤ 50
  • 1 ≤ M ≤ 100
  • 0 ≤ A[r][c] ≤ 100
  • 1 ≤ di ≤ 8
  • 1 ≤ si ≤ 50

예제3

  1. 예제 1

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

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

    입력
    5 8
    100 100 100 100 100
    100 100 100 100 100
    100 100 100 100 100
    100 100 100 100 100
    100 100 100 100 100
    8 1
    7 1
    6 1
    5 1
    4 1
    3 1
    2 1
    1 1
    
    예상 출력
    2657