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

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

물에 잠기는 목초지

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

요약
n×n 격자와 k마리의 소, h시간 동안의 홍수 수위가 주어질 때, 매시간 소들이 이동한 뒤 물이 차오르는 상황에서 살아남을 수 있는 소의 최대 수를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 그래프, BFS, 시뮬레이션
정답자
아직 제출이 없습니다

문제

농부 John의 농장에 비가 내려 목초지가 물에 잠길 위험에 처했습니다. 다행히 그는 농장 전체의 수위를 항상 똑같이 유지해 주는 최신 배수 시스템을 갖추고 있습니다. 하지만 지형만큼은 그의 뜻대로 되지 않았습니다.

소들은 마른 땅 위에만 서 있을 수 있습니다. 소가 서 있는 칸이 물에 잠기면 그 소는 익사합니다. 매 시간마다 각 소는 제자리에 머무르거나, 상하좌우로 인접한 네 칸 중 하나로 이동할 수 있습니다. 수위는 매 시간 오르내리므로, 이 이동을 통해 소는 물을 피할 기회를 얻습니다.

밭은 행과 열로 번호가 매겨진 격자 칸으로 나뉘어 있으며, 각 칸은 한 번에 소를 최대 한 마리만 수용할 수 있습니다.

매 시간은 두 단계로 진행됩니다. 먼저 모든 소가 이동(또는 대기)하고, 그다음 해당 시간의 수위가 적용되어 물에 잠긴 칸 위에 있는 소는 모두 익사합니다. 어떤 칸은 그 높이가 현재 수위 이하일 때 물에 잠긴 것으로 봅니다.

모든 소가 매우 똑똑하고 앞을 내다볼 수 있어 항상 최적의 이동을 함께 선택한다고 할 때, 마지막 시간까지 살아남을 수 있는 소의 최대 마릿수는 얼마입니까?

입력

입력에는 여러 개의 테스트 케이스가 주어집니다.

각 테스트 케이스의 첫 줄에는 세 정수 nn (1≤n≤1001 \le n \le 100), kk (0≤k≤1000 \le k \le 100), hh (1≤h≤241 \le h \le 24)가 주어집니다. nn은 밭의 한 변 길이(밭은 n×nn \times n 격자), kk는 소의 수, hh는 추적할 시간의 수입니다.

다음 nn개의 줄에는 각각 nn개의 정수가 주어지며, 각 칸의 높이(0≤height≤1000 \le \text{height} \le 100)를 나타냅니다. 이 중 첫 줄이 00행, 마지막 줄이 n−1n-1행이고, 한 줄 안에서 첫 번째 값이 00열, 마지막 값이 n−1n-1열입니다.

이어지는 kk개의 줄에는 각각 두 정수 rr과 cc (0≤r,c<n0 \le r, c < n)가 주어지며, 시간 00에서의 한 소의 행과 열을 나타냅니다. 서로 다른 두 소가 같은 칸에서 시작하지는 않습니다.

그다음 hh개의 줄에는 각각 한 정수가 주어지며, 해당 시간의 수위(0≤level≤1000 \le \text{level} \le 100)를 시간 11부터 시간 hh까지 순서대로 나타냅니다. 시간은 11부터 시작하지만 소의 위치는 시간 00에 주어지므로, 모든 소는 시간 11의 침수가 일어나기 전에 한 번 이동할 수 있습니다.

입력의 끝은 세 개의 00으로 이루어진 줄이며, 이 줄은 처리하지 않습니다.

출력

각 테스트 케이스마다 살아남을 수 있는 소의 최대 마릿수를 정수 하나로 출력합니다. 각 답을 한 줄에 하나씩 출력하며, 불필요한 공백이나 답 사이의 빈 줄은 출력하지 않습니다.

예제2

  1. 예제 1

    입력
    3 1 3
    2 1 2
    3 1 3
    2 4 2
    1 1
    0
    2 
    1
    0 0 0
    
    예상 출력
    1
    
  2. 예제 2

    입력
    2 1 1
    1 3
    3 3
    0 0
    1
    1 1 1
    0
    0 0
    0
    0 0 0
    
    예상 출력
    1
    0