#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... |