输入样例1
4 16 1 6
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
输出样例1
7
输入样例2
11 8 2 2
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 7 0 0 0 7 0 0 7 7 0
7 0 7 0 7 0 7 0 7 0 7
7 0 0 0 7 0 0 0 7 0 7
7 0 0 0 0 7 0 0 7 7 0
7 0 0 0 0 0 7 0 7 0 0
7 0 7 0 7 0 7 0 7 0 0
0 7 0 0 0 7 0 0 7 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
输出样例2
83
代码
#include<iostream>
#include<cstring>
#include<stack>
const int N=601;
using namespace std;
int a[N][N],b[N][N];
int n,l,r,t;
int fun(int i,int j,int r,int t){
int minx=max(i-r-1,0);
int maxx=min(i+r,n);
int miny=max(j-r-1,0);
int maxy=min(j+r,n);
int cnt=(maxx-minx)*(maxy-miny);
int sum;
if(minx==0&&miny==0) sum=b[maxx][maxy];
else if(minx==0) sum=b[maxx][maxy]-b[maxx][miny];
else if(miny==0) sum=b[maxx][maxy]-b[minx][maxy];
else sum=b[maxx][maxy]-b[minx][maxy]-b[maxx][miny]+b[minx][miny];
if(sum<=t*cnt) return 1;
else return 0;
}
int main(){
cin>>n>>l>>r>>t;
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++){
b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+a[i][j];
}
}
int num=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(fun(i,j,r,t)) num++;
}
}
cout<<num<<endl;
return 0;
}