这个程序为什么会TLE呀?
#include<bits/stdc++.h>
using namespace std;
struct node{
long long x,y;
long long s;
}a[500010],vis[500010];
long long r,c,d,k,ans=0;
int main(){
cin>>r>>c>>d>>k;
long long p(1),q(1);
for(long long i=1;i<=r;i++){
for(long long j=1;j<=c;j++){
char ch;
cin>>ch;
if(ch=='M'){
vis[p].x=i;vis[p].y=j;
vis[p++].s=0;
}
if(ch=='S'){
a[q].x=i;a[q++].y=j;
}
}
}
p--;q--;
for(long long i=1;i<=p;i++){
for(long long j=1;j<=q;j++){
if(max(abs(vis[i].x-a[j].x),abs(vis[i].y-a[j].y))<=d){
vis[i].s++;
}
}
}
for(long long i=1;i<=p;i++){
if(vis[i].s>=k){
ans++;
}
}
cout<<ans<<"\n";
return 0;
}
题目中r∗c<5e5