解题核心:
代码:
#include<iostream>
using namespace std;
int a[600][600];
int sum[600][600];
int main()
{
int n, L, r, t;
cin >> n >> L >> r >> t;
int num = 0;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cin >> a[i][j];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
sum[i][j] = sum[i][j-1] + sum[i-1][j] - sum[i - 1][j - 1] + a[i][j];
}
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
int minx = max(1, i - r);
int miny = max(1, j - r);
int maxx = min(n, r + i);
int maxy = min(n, r + j);
double s = double(sum[maxx][maxy] - sum[maxx][miny-1] - sum[minx-1][maxy] + sum[minx-1][miny-1]) / double((maxx - minx+1) * (maxy - miny+1));
if (s <= double(t))
num++;
}
}
cout << num << endl;
return 0;
}