问题分析
样例输入
4 16 1 6
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
Data
样例输出
7
Data
样例输入
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
Data
样例输出
83
第一回合
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
int main(){
int n,l,r,t;
int i=0,j=0;
int ans=0;
cin>>n>>l>>r>>t;
vector<vector<int> > b;
int temp;
for(i =0;i<n;i++){
vector<int> a;
for(j=0;j<n;j++){
cin>>temp;
a.push_back(temp);
}
b.push_back(a); // 二维数组
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
int b_x = i + r > n - 1 ? n - 1 : i + r; //确定边界
int b_y = j + r > n - 1 ? n - 1 : j + r;
int sum=0,num=0;
for(int k= i - r > 0 ? i - r : 0 ; k <= b_x ; k++){
for(int m=j-r>0? j-r:0; m<=b_y ;m++){
num++;
sum+= b[k][m];
}
}
double avg=(double)sum/num;
if(avg <= t){
ans++;
}
}
}
cout<<ans;
return 0;
}