Submission #1130328

#TimeUsernameProblemLanguageResultExecution timeMemory
1130328bachnvCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
48 ms32172 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll n, m, d, k;
vector<pair<ll,ll>> v;
int main(){
    cin >> n >> m >> d >> k;
    ll pfs[n + 5][m + 5];
    for(int i = 0; i <= n; i++){
        for(int j = 0; j <= m; j++){
            pfs[i][j] = 0;
        }
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            char c;
            cin >> c;
            pfs[i][j] = pfs[i - 1][j] + pfs[i][j - 1] - pfs[i - 1][j - 1];
            if(c == 'S'){
                pfs[i][j]++;
            }
            if(c == 'M'){
                v.push_back({i, j});
            }
        }
    }
    ll res = 0;
    for(int i = 0; i < v.size(); i++){
        ll temp = 0;
        ll x = v[i].first;
        ll y = v[i].second;
        ll a = x;
        ll b = y;
        x = min(x + d, n);
        y = min(y + d, m);
        a = max(1LL, a - d);
        b = max(1LL, b - d);
        temp = pfs[x][y] + pfs[a - 1][b - 1] - pfs[x][b - 1] - pfs[a - 1][y];
        if(temp >= k){
            res++;
        }
    }
    cout << res;
}
#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...