#include <bits/stdc++.h>
using namespace std;
int main(void)
{
long long r,c,d,k,ans=0,x1,y1,x2,y2;
vector<pair<long long,long long>> v;
cin>>r>>c>>d>>k;
vector<long long> ps((r+2)*(c+2),0);
c++;
for(int i=1;i<=r;i++)
{
string s;
cin>>s;
for(int j=1;j<c;j++)
{
if(s[j-1]=='S')
{
ps[i*c+j]=1;
}
else if(s[j-1]=='M')
{
v.push_back({i,j});
}
}
}
for(int i=1;i<=r;i++)
{
for(int j=1;j<c;j++)
{
//cout<<"("<<i<<","<<j<<") "<<i*(c+1)+j<<" ";
ps[i*c+j]=ps[i*c+j]+ps[i*c+j-c]+ps[i*c+j-1]-ps[i*c+j-c-1];
//cout<<ps[i*c+j]<<" ";
}
//cout<<"\n";
}
for(int i=0;i<v.size();i++)
{
x1=v[i].first-d;
x2=v[i].first+d;
y1=v[i].second-d;
y2=v[i].second+d;
x1=max(x1,(long long)0);
x2=min(x2,r);
y1=max(y1,(long long)0);
y2=min(y2,c-1);
//cout<<x2<<" "<<y2<<" "<<ps[x2*c+y2]<<"\n";
if(ps[x2*c+y2]-ps[x2*c+y1]-ps[x1*c+y2]+ps[x1*c+y1]>=k)
{
ans++;
}
}
cout<<ans;
return 0;
}
/*
5 5 1 1
....M
.M...
..S..
.S...
...M.
4 4 4 1
....
.M..
..MM
...S
*/
# | 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... |