#include <bits/stdc++.h>
using namespace std;
int r,c,d,k,ans=0;
int main(){
//freopen("min.txt","r",stdin);
cin>>r>>c>>d>>k;
vector<vector<char> > mp(r+2,vector<char>(c+2,' '));
vector<vector<int> > a(r+2,vector<int>(c+2,0));
vector<vector<int> > pref(r+2,vector<int>(c+2,0));
for (int i=1;i<=r;i++){
for (int j=1;j<=c;j++){
cin>>mp[i][j];
if (mp[i][j]=='S'){
a[min(r+1,i+d+1)][(c+1,j+d+1)]++;//bottom right corner
a[max(1,i-d)][max(1,j-d)]++;
a[max(1,i-d)][min(c+1,j+d+1)]--;
a[min(r+1,i+d+1)][max(1,j-d)]--;
}
}
}
for (int i=1;i<=r;i++){
for (int j=1;j<=c;j++){
pref[i][j] = a[i][j]+pref[i-1][j]+pref[i][j-1]-pref[i-1][j-1];
if (pref[i][j]==k&&mp[i][j]=='M'){
ans++;
}
}
}
cout<<ans;
}
# | 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... |