R행 C열 격자에서 몬스터가 없는 D x D 정사각형 부분격자의 개수를 모두 센다.
보통4동적 계획법행렬누적 합구현면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB코드자몬 트레이너는 몬스터를 찾아 돌아다니지만, 트레이너가 아닌 사람에게 몬스터는 아주 위험하다. 몬스터가 한 마리도 없는 안전한 자리를 찾아야 한다.
세상을 격자로 보자. 일부 칸에는 몬스터가 있다. 안전한 정사각형은 격자에 맞춰 놓인 D×D 크기의 칸 묶음 중 몬스터가 하나도 없는 것이다. 여기서 D≥1이다. 세상 전체에 안전한 정사각형이 크기에 관계없이 몇 개 있는지 구하라.
첫 줄에 테스트 케이스의 개수 T가 주어진다. 이어서 T개의 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 줄에는 세 정수 R, C, K가 주어진다. 격자는 R개의 행과 C개의 열로 이루어지고, 그 안에 몬스터가 K마리 있다. 이어서 K개의 줄이 주어진다. 각 줄에는 i번째 몬스터가 있는 칸의 행 번호 Ri와 열 번호 Ci가 주어진다. 행 번호는 위에서 아래로 0부터 매기고, 열 번호는 왼쪽에서 오른쪽으로 0부터 매긴다.
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 그 테스트 케이스의 안전한 정사각형 개수이다.
예제의 첫 번째 테스트 케이스의 격자는 다음과 같다.
0 0 0
0 0 0
0 1 0
0은 몬스터가 없는 칸, 1은 몬스터가 있는 칸이다. 안전한 정사각형은 10개이며, 1×1이 8개, 2×2가 2개이다.
두 번째 테스트 케이스의 격자는 다음과 같다.
0 1 0 1 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1 0
1 0 0 0 1 0 0 0 0 1 1
0 0 0 0 1 0 0 0 0 0 1
안전한 정사각형은 51개이며, 1×1이 32개, 2×2가 13개, 3×3이 5개, 4×4가 1개이다.