#include <iostream>
#include <cmath>
using namespace std;
const int MAX = 520;
long long a[MAX][MAX];
int n, m;
long long k;
long long qt[MAX][MAX];
long long sum[MAX][MAX];//sum[x][y]设为从1,1到x,y的值
long long s;
long long ans = 0;
int main()
{
cin >> n >> m >> k;;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
{
cin >> a[i][j];
qt[i][j] = qt[i][j - 1] + a[i][j];
sum[i][j] = sum[i - 1][j] + qt[i][j];
}
//从x1,y1到x2,y2的和为 sum[x2][y2] - sum[x1-1][y2] - sum[x2][y1-1] + sum[x1-1][y1-1]
for (int x1 = 1; x1 <= n; x1++) {
for (int y1 = 1; y1 <= m; y1++) {
for (int x2 = x1; x2 <= n; x2++) {
for (int y2 = y1; y2 <= m; y2++)
{
if ((long long)sum[x2][y2] - sum[x1 - 1][y2] - sum[x2][y1 - 1] + sum[x1 - 1][y1 - 1] <= k)
ans++;
else
break;
}
}
}
}
/*for (int x1 = 1; x1 <= n; x1++) {
for (int x2 = x1; x2 <= n; x2++) {
for (int y1 = 1, y2 = 1; y2 <= m; y2++)
{
while (y1 <= y2 && (long long)sum[x2][y2] - sum[x1 - 1][y2] - sum[x2][y1 - 1] + sum[x1 - 1][y1 - 1] > k)
y1++;
ans += y2 - y1 + 1;
}
}
}*/
cout << ans;
return 0;
}
11-23
01-04
475
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交