用二维前缀和
#include<iostream>
using namespace std;
const int N=610;
int a[N][N],s[N][N];
int main()
{
int n,L,r,t;
cin>>n>>L>>r>>t;
int sum=0;
int x1,x2,y1,y2;
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++)
{
s[i][1]=s[i-1][1]+a[i][1];
s[1][i]=s[1][i-1]+a[1][i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i-r>=1&&j-r>=1)
{
x1=i-r,y1=j-r;
}
else if(i-r<1&&j-r>=1)
{
x1=1,y1=j-r;
}
else if(i-r>=1&&j-r<1)
{
x1=i-r,y1=1;
}
else if(i-r<1&j-r<1)
{
x1=1,y1=1;
}
if(i+r<=n&&j+r<=n)
{
x2=i+r,y2=j+r;
}
else if(i+r>n&&j+r<=n)
{
x2=n,y2=j+r;
}
else if(i+r<=n&&j+r>n)
{
x2=i+r,y2=n;
}
else if(i+r>n&&j+r>n)
{
x2=n,y2=n;
}
float p=s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1];
float q=(x2-x1+1)*(y2-y1+1);
float k=p/q;
if(k<=t) sum++;
}
}
cout<<sum;
}