#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
int n,m,x,y;
cin >> n >> m >> x >> y;
vector<vector<char>> v(n,vector<char>(m));
for (int i=0; i<n; i++){
for (int j=0; j<m; j++) cin>>v[i][j];
}
vector<vector<int>> frq(n+1,vector<int>(m+1));
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (v[i][j]=='.' or v[i][j]=='M')continue;
if (n<m){
for (int k=max(0LL,i-x); k<=min(n-1,i+x); k++){
frq[k][max(j-x,0LL)]++;
frq[k][min(j+x+1,m)]--;
}
}
else{
for (int k=max(0ll,j-x); k<=min(m-1,j+x); k++){
frq[max(i-x,0ll)][k]++;
frq[min(i+x+1,n)][k]--;
}
}
}
}
if (n<m){
for (int i=0; i<n; i++){
for (int j=1; j<m; j++)
frq[i][j]+=frq[i][j-1];
}
}
else{
for (int i=1; i<n; i++){
for (int j=0; j<m; j++)
frq[i][j]+=frq[i-1][j];
}
}
int ans=0;
for (int i=0; i<n; i++){
for (int j=0; j<m; j++){
if (v[i][j]=='M' && frq[i][j]>=y) ans++;
}
}
cout<< ans << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |