만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

T - 덮개

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

요약
각 특수 칸을 중심으로 T자 테트로미노를 하나씩 놓습니다. 겹치지 않고 격자를 벗어나지 않으면서 덮는 칸 숫자의 합을 최대로 구합니다.
난이도

어려움10점 중 9점

유형
그래프, 행렬
정답자
아직 제출이 없습니다

문제

테트리스를 해 본 적이 있다면 다음과 같은 모양의 블록을 본 적이 있을 것이다.

이 도형을 T 테트로미노라고 한다. 테트로미노는 칸 4개가 서로 연결된 도형이다. 그림에서 × 표시가 된 칸을 중심 칸이라고 한다.

만카는 mm행 nn열의 직사각형 격자를 그리고, 각 칸에 수를 적는다. 행은 0부터 m−1m-1까지, 열은 0부터 n−1n-1까지 번호를 붙인다. 또한 몇몇 칸을 특수 칸으로 표시한다(예를 들어 빨간색으로 칠한다). 그리고 친구 니카에게 다음 조건을 지키면서 격자에 T 테트로미노를 놓아 달라고 부탁한다.

  • T 테트로미노의 개수는 특수 칸의 개수와 같아야 한다. 각 T 테트로미노의 중심 칸은 특수 칸 위에 있어야 한다.
  • 두 T 테트로미노는 서로 겹칠 수 없다.
  • 모든 T 테트로미노는 격자 안에 완전히 들어가야 한다.

T 테트로미노의 방향은 네 가지다: ┬, ┴, ├, ┤.

조건을 만족할 수 없으면 니카는 No라고 답한다. 만족할 수 있으면 T 테트로미노가 덮는 칸에 적힌 수의 합이 최대가 되도록 배치를 찾고, 그 최댓값을 만카에게 알려 준다.

이 퍼즐을 풀어 니카를 도와주는 프로그램을 작성하라.

입력

첫 줄에 정수 mm과 nn이 주어진다. 이어지는 mm개의 줄에는 각각 nn개의 정수가 주어지며, 모두 [0,1000][0, 1000] 구간에 속한다. ii번째 줄의 jj번째 정수는 ii행 jj열 칸에 적힌 수이다.

다음 줄에는 정수 kk가 주어지며, k∈{1,…,mn}k \in \{1, \ldots, mn\}이다. 이어지는 kk개의 줄에는 각각 정수 ri∈{0,…,m−1}r_i \in \{0, \ldots, m-1\}와 ci∈{0,…,n−1}c_i \in \{0, \ldots, n-1\}이 주어진다. 이는 ii번째 특수 칸의 행 번호와 열 번호이다. 특수 칸 목록에는 중복이 없다.

출력

T 테트로미노가 덮는 칸에 적힌 수의 합의 최댓값을 출력한다. 가능한 배치가 없으면 No를 출력한다.

제한

1≤mn≤1061 \le mn \le 10^6

예제2

  1. 예제 1

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

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