제출 #1309485

#제출 시각아이디문제언어결과실행 시간메모리
1309485zxzuamCollecting Mushrooms (NOI18_collectmushrooms)C++20
0 / 100
14 ms12096 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int maxn = 1e5 + 9;
void solve(){
    int n, m, D, k;
    cin >> n >> m >> D >> k;
    vector <vector <int>> pref(n + 1, vector <int>(m + 1));
    char c[n + 1][m + 1];
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            cin >> c[i][j];
            pref[i][j] = pref[i - 1][j] + pref[i][j - 1] - pref[i - 1][j - 1];
            if(c[i][j] == 'S') {
                pref[i][j]++;
            }
        }
    }
    int ans = 0;
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= m; j++) {
            if(c[i][j] == 'M' ) {
                int A = i + D;
                int B = j + D;
                int a = i - D;
                int b = j - D;
                if(A > n) {
                    A = n;
                }
                if(B > n){
                    B = n;
                }
                if(a <= 0) {
                    a = 1;
                }
                if(b <= 0) {
                    b = 1;
                }
                int x = pref[A][B] - pref[A][b - 1] - pref[a - 1][B] + pref[a - 1][b - 1];
                if(x >= k) {
                    ans++;
                }
            }
        }
    }
    cout << ans;
}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int tt = 1;
    //cin >> tt;
    while(tt--) {
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...