#include <bits/stdc++.h>
#define boost ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define int long long
using namespace std;
const int inf=1e18;
const int N=5e5+100;
const int N1=5e5;
const int N2=1e6;
const int mod=1e9+7;
const int k1=447;
struct edge{
    int x,w;
};
struct edge1{
    int x,g,d;
};
signed main(){
boost;
    int n,m,d,k;
    cin>>n>>m>>d>>k;
    vector<char>a[n+4];
    vector<int>b[n+4];
    vector<pair<int,int> >v;
    for(int i=1;i<=n;i++){
        b[i].push_back(0);
        a[i].push_back('.');
        for(int j=0;j<m;j++){
            char x;
            cin>>x;
            if(x=='S'){
                v.push_back({i,j+1});
            }
            a[i].push_back(x);
            b[i].push_back(0);
        }
        b[i].push_back(0);
    }
    b[0].push_back(0);
    for(int i=1;i<=m;i++){
        b[0].push_back(0);
    }
    b[0].push_back(0);
    for(int i=0;i<v.size();i++){
        int x=max(v[i].first-d,1ll),y=max(v[i].second-d,1ll);
        int x1=min(v[i].first+d,n),y1=min(v[i].second+d,m);
        b[x][y]++;
        if(y1+1<=m){
        b[x][y1+1]--;
        }
        if(x1+1<=n){
        b[x1+1][y]--;
        if(y1+1<=m){
         b[x1+1][y1+1]++;
         }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            int cnt=0;
            b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+b[i][j];
        }
    }
    int ans=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j]=='M'&&b[i][j]>=k){
                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... |