Skip to content

Pro2

原始文件为 CPP 代码,本文是转换后的 Markdown 文件。

#include<iostream>
using namespace std;
const int N = 610;
int a[N][N];
int n, l, r, t;
int main()
{
    freopen("in.txt","r",stdin);
    int res = 0; // 保存结果
    cin >> n >> l >> r >> t ;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++) 
        {
            int x;
            cin >> x;
            a[i][j] = a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1] + x; // 输入元素值,并得出前缀和
        }
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)//遍历检查
        {
            int s, m;
            int x1, y1, x2, y2;//得出区域的右下角和左上角
            x1 = max(1, i - r);
            y1 = max(1, j - r);
            x2 = min(n, i + r);
            y2 = min(n, j + r);
            s = a[x2][y2] - a[x1 - 1][y2] - a[x2][y1 - 1] + a[x1 - 1][y1 - 1];//直接前缀和算
            m = (y2 - y1 + 1) * (x2 - x1 + 1); //元素数量
            if(s <= t * m) res ++; //判断是否小于等于t
        }
    cout << res;    
}