만드는 중입니다

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

지옥문 개수 세기

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

요약
테두리 칸에 2가 없고 내부 칸이 모두 0이 되도록 만들 수 있는 직사각형 (r1, c1, r2, c2)의 개수를 셉니다.
난이도

보통10점 중 5점

유형
행렬, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

마인크래프트는 다양한 종류의 블록으로 구조물을 만드는 게임이다. 게임 안의 블록은 다음 세 가지 종류로 나뉜다.

  • 빈 공간(0): 블록이 없는 상태이다.
  • 옵시디언 블록(1): 문제에서 중요한 역할을 하는 특수한 블록이다.
  • 그 외의 블록(2): 나무 블록, 흙 블록 등이 여기에 속한다.

지옥문은 특정 조건을 만족하는 직사각형 모양의 구멍으로 된 구조물이며, 지옥으로 이동하는 통로로 쓰인다.

높이 NN, 너비 MM인 직사각형 상태 SS가 주어진다. 위치 (r,c)(r, c)의 Sr,cS_{r,c}는 rr번째 행, cc번째 열의 블록이며, 위의 세 종류 중 하나이다.

두 위치 (r1,c1)(r_1, c_1), (r2,c2)(r_2, c_2)를 각각 직사각형의 왼쪽 위 꼭짓점과 오른쪽 아래 꼭짓점으로 하는 지옥문을 만들려고 한다. 플레이어는 블록을 제거할 수 없고, 옵시디언 블록만 자유롭게 설치할 수 있다. 이때 지옥문이 되려면 다음 조건을 만족해야 한다.

  • r2−r1≥4r_2 - r_1 \ge 4, c2−c1≥3c_2 - c_1 \ge 3
  • c1<c<c2c_1 < c < c_2인 모든 cc에 대해 Sr1,c≠2S_{r_1,c} \neq 2이고 Sr2,c≠2S_{r_2,c} \neq 2이다.
  • r1<r<r2r_1 < r < r_2인 모든 rr에 대해 Sr,c1≠2S_{r,c_1} \neq 2이고 Sr,c2≠2S_{r,c_2} \neq 2이다.
  • r1<r<r2r_1 < r < r_2, c1<c<c2c_1 < c < c_2인 모든 순서쌍 (r,c)(r, c)에 대해 Sr,c=0S_{r,c}=0이다.

실제 마인크래프트와 달리, 여기서는 지옥문의 최대 크기에 제한이 없다.

이때 지옥문을 만들 수 있는 순서쌍 (r1,c1,r2,c2)(r_1, c_1, r_2, c_2)의 개수를 구하여라.

입력

첫 번째 줄에 현재 상태 SS의 크기 NN과 MM이 주어진다. (5≤N≤3005 \le N \le 300, 4≤M≤3004 \le M \le 300)

두 번째 줄부터 NN개의 줄에 걸쳐 MM개의 수가 공백으로 구분되어 주어진다. i+1i+1번째 줄의 jj번째 수는 Si,jS_{i,j}이다. 0은 빈 상태, 1은 옵시디언 블록으로 채워진 상태, 2는 그 외의 블록으로 채워진 상태이다.

출력

조건에 따라 지옥문을 만들 수 있는 순서쌍 (r1,c1,r2,c2)(r_1, c_1, r_2, c_2)의 개수를 출력한다.

힌트

첫 번째 예제에서 조건을 만족하는 순서쌍의 개수는 3개이다.

예제2

  1. 예제 1

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

    입력
    5 4
    2 1 1 2
    1 0 0 1
    1 0 0 1
    1 0 0 1
    2 1 1 2
    
    예상 출력
    1