#JX20253contest2D. 放烟花喽

放烟花喽

题目描述

暑期来咯,许多海边城市热闹非凡,汇集了来自各地的游客,夜晚 大家都迫不及待地等待着烟花表演的开始。小 z 也想去看烟花,但不幸的是跟他有同样想法的人实在太多,海边的观赏区人山人海……

海边的观赏区域可视作一个 N×M 的网格图,其中有一些格子是空的,另外一些格子则被人或者建筑物占领。烟花会在一些格子上开始燃放,一个空的格子对小 z 而言可能是一个优秀的观赏位置,当且仅当这个格子能看到三个及以上不同格子上燃放的烟花。一个格子能看到一个燃放的烟花,指的是:

  • 格子与烟花在同一行或同一列;
  • 格子与烟花的连线上的所有格子,要不是空格子,要不格子上的任何物体的高度均严格低于 小 z 的身高。

现在给定海边观赏区域的情况以及小 z 的身高,请找到所有对小 z 而言的优秀观赏位置数量?

数据范围:(1N,M50,1H200)(1≤N,M≤50,1≤H≤200),矩阵中所有整数的绝对值不超过 500。

输入格式

输入第一行是三个正整数 N,M,HN,M,H,表示活动场地矩阵大小为 N×MN×M,小 z 的身高为 HH

接下来的 NNMM 列的矩阵,每个整数的含义如下:

  • 如果是一个正整数,则表示该格子被人或建筑物占据,高度为对应的值。
  • 如果是一个负整数,则表示该格子用于燃放烟花。所有燃放烟花的格子视为没有高度。
  • 如果是 0,则表示该格子是空格子。

所有整数的绝对值不超过 500。

输出格式

4 5 190
0   0   0   -2   -1
0  150 200  0    0
0   0  0    0    0
-5 -4  -3   0    0
4

样例解释: 优秀观赏位置分别为 [(1,1),(1,2),(4,4),(4,5)][(1,1),(1,2),(4,4),(4,5)];

10 10 175
0 0 0 0 0 0 0 0 0 0
0 50 0 180 -100 180 0 70 30 0
0 30 0 0 300 0 0 0 0 0
0 250 0 0 -100 0 0 0 0 0
0 -100 174 0 0 0 0 169 -100 0
0 -100 0 0 0 0 0 0 -100 0
0 -1 0 0 170 0 0 0 0 0
0 5 0 0 300 0 0 0 0 0
0 20 0 0 -100 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
6

提示