蓝桥杯2109统计子矩阵我的通过率只有70%(哭哭



```c++
#include <iostream>
using namespace std;
int arr[501][501];
int k, n, m;
int sum[501][501] = { 0 };
long long num=0;
int main()
{
scanf("%d%d%d", &n, &m, &k);
for (int x = 1; x <= n; x++) {
for (int y = 1; y <= m; y++) {
scanf("%d", &arr[x][y]);
sum[x][y] = sum[x - 1][y] + sum[x][y - 1] - sum[x - 1][y - 1] + arr[x][y];
}
}
for (int x1 = 1; x1 <= n; x1++) {
for (int x2 = x1; x2 <= n; x2++) {
int y1 = 1;
int y2 = 1;
for (; y1 <= m; y1++) {
while (y2<=m&&(sum[x2][y2] - sum[x1 - 1][y2] - sum[x2][y1 - 1] + sum[x1 - 1][y1 - 1])<= k) {
y2++;
}
num += (y2 - y1);
}
}
}
printf("%d", num);
return 0;
}