U411769 优秀班级评选
题目描述
某学校有 $N \times N$ 个班级($1 \leq N \leq 500$),排列成一个 $N$ 行 $N$ 列的方阵。每个班级 $(i,j)$ 的综合评分用一个整数 $S(i,j)$ 表示,范围在 $1 \sim 200$ 之间。
学校计划选出一个**连续的子方阵区域**(即矩阵的一个子矩阵)作为"优秀班级示范区"。评选的标准是:**该区域内所有班级的评分最小值恰好等于 $100$**(即至少有一个班级评分为 $100$,且没有任何班级评分低于 $100$)。
请你帮学校计算出有多少种不同的子矩阵选择方案。子矩阵最大可以为整个方阵,最小可以仅为一个班级(共有 $N^2(N+1)^2/4$ 个不同的子矩阵——请注意该数值可能超出 $32$ 位整数范围,需要使用 $64$ 位整数类型,例如 C++ 中的 `long long`)。
输入格式
第一行包含一个整数 $N$,表示方阵的行列数。
接下来 $N$ 行,每行包含 $N$ 个整数,表示每个班级的综合评分 $S(i,j)$。
输出格式
输出一个整数,表示评分最小值恰好等于 $100$ 的子矩阵数量。
说明/提示
## 样例说明
方阵为:
```.cpp
57 120 87
200 100 150
2 141 135
```
满足条件(最小值恰好为 $100$)的子矩阵共有 $8$ 个,例如仅包含第 $2$ 行第 $2$ 列的 $1 \times 1$ 子矩阵、包含 $(1,2)$ 到 $(2,2)$ 的 $2 \times 1$ 子矩阵等。
## 提示/数据范围
- 对于 $50\%$ 的数据,满足 $N \le 200$。
- 对于另外 $50\%$ 的数据,没有额外限制。
- 所有评分 $S(i,j)$ 均为 $1 \sim 200$ 之间的整数。
- 答案可能超过 $2^{31}-1$,请使用 $64$ 位整数(`long long`)存储。