使用 二维前缀和 算法
import java.util.Scanner;
public class Main
{
static int[][] arr;
static int n,L,r,t=0;
public static void main(String[] args)
{
Scanner s=new Scanner(System.in);
n=s.nextInt();
L=s.nextInt();
r=s.nextInt();
t=s.nextInt();
arr=new int[n+1][n+1];
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
arr[i][j]=s.nextInt()+arr[i-1][j]+arr[i][j-1]-arr[i-1][j-1];
}
}
int count=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int sum=get_num(Math.max(1,i-r),Math.max(1,j-r),Math.min(n,i+r),Math.min(n,j+r));
int cnt=get_cnt(Math.max(1,i-r),Math.max(1,j-r),Math.min(n,i+r),Math.min(n,j+r));
if(sum<=cnt*t){
count++;
}
}
}
System.out.println(count);
s.close();
}
public static int get_num(int x1,int y1,int x2,int y2){
return arr[x2][y2]-arr[x1-1][y2]-arr[x2][y1-1]+arr[x1-1][y1-1];
}
public static int get_cnt(int x1,int y1,int x2,int y2){
return (x2-x1+1)*(y2-y1+1);
}
}