Submission #621202

#TimeUsernameProblemLanguageResultExecution timeMemory
621202srivatsav_kannanCollecting Mushrooms (NOI18_collectmushrooms)C++14
100 / 100
41 ms9096 KiB
#include <iostream>
#include <iomanip>
#include <array>
#include <fstream>
#include <vector>
#include <set>
#include <queue>
#include <cmath>
#include <map>
#include <algorithm>
#include <numeric>
#include <stack>
#include <cstring>
#include <bitset>
#include <climits>
#include <valarray>
#include <list>
#include <functional>
#include <unordered_map>
#define int long long int
#define inf 100000000000
#define endl '\n'
#define mod 998244353
using namespace std;
signed main(){
    int r,c,d,k; cin >> r >> c >> d >> k;
    char a[r+1][c+1];
    int pre[r+1][c+1];
    for (int i = 1; i <= r; i++){
        for (int j = 1; j <= c; j++){
            cin >> a[i][j];
        }
    }
    for (int i = 0; i <= r; i++){
        for (int j = 0; j <= c; j++) pre[i][j] = 0;
    }
    for (int i = 1; i <= r; i++){
        for (int j = 1; j <= c; j++){
            pre[i][j] = (pre[i-1][j]+pre[i][j-1]+(a[i][j] == 'S'))-pre[i-1][j-1];
        }
    }
    int cnt = 0;
    for (int i = 1; i <= r; i++){
        for (int j = 1; j <= c; j++){
            if (a[i][j] != 'M') continue;
            int u = max(i-d,1LL);
            int v = max(j-d, 1LL);
            int w = min(i+d, r);
            int x = min(j+d, c);
            int cur = pre[w][x]-pre[u-1][x]-pre[w][v-1]+pre[u-1][v-1];
            if (cur >= k) cnt++;
        }
    }
    cout << cnt << endl;
}
#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...