#include <bits/stdc++.h>
#define int long long
using namespace std;
#define ar array
#define boost ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
const int N = 1e6 + 12, INF = 1e18 + 7, mod = 1e9 + 7;
signed main () {
boost
int r, c, d, k;
cin >> r >> c >> d >> k;
char arr[r + 1][c + 1];
vector<pair<int, int>>v, v2;
for(int i = 1; i <= r; ++i){
for(int j = 1; j <= c; ++j){
cin >> arr[i][j];
if(arr[i][j] == 'M'){
v.push_back({i, j});
}
if(arr[i][j] == 'S'){
v2.push_back({i, j});
}
}
}
if(r != 1){
int cnt = 0;
for(auto [x, y] : v){
int cn = 0;
for(auto [x2, y2]: v2){
int hm = max(abs(x2 - x), abs(y2 - y));
if(hm <= d){
cn += 1;
}
if(cn >= k){
break;
}
}
if(cn >= k){
cnt += 1;
}
}
cout << cnt << '\n';
} else {
int cnt2 = 0;
for(auto [x, y] : v){
int cnt = 0;
if(x - 1 >= 1 and arr[x - 1][y] == 'S'){
cnt += 1;
}
if(x + 1 <= r and arr[x + 1][y] == 'S'){
cnt += 1;
}
if(y - 1 >= 1 and arr[x][y - 1] == 'S'){
cnt += 1;
}
if(y + 1 <= c and arr[x][y + 1] == 'S'){
cnt += 1;
}
if(x - 1 >= 1 and y - 1 >= 1 and arr[x - 1][y - 1] == 'S'){
cnt += 1;
}
if(x - 1 >= 1 and y + 1 <= c and arr[x - 1][y + 1] == 'S'){
cnt += 1;
}
if(x + 1 <= r and y - 1 >= 1 and arr[x + 1][y - 1] == 'S'){
cnt += 1;
}
if(x + 1 <= r and y + 1 <= c and arr[x + 1][y + 1] == 'S'){
cnt += 1;
}
if(cnt >= k){
cnt2 += 1;
}
}
cout << cnt2;
}
}
# | 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... |