Submission #534649

#TimeUsernameProblemLanguageResultExecution timeMemory
534649devariaotaCollecting Mushrooms (NOI18_collectmushrooms)C++17
100 / 100
28 ms24284 KiB
#include <bits/stdc++.h>
using namespace std;
int r,c,d,k;

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> r >> c >> d >> k;
    int arr[r+5][c+5];
    int pref[r+5][c+5];
    memset(arr,0,sizeof(arr));
    memset(pref,0,sizeof(pref));
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            char x;
            cin >> x;
            if(x == '.') arr[i][j] = 0;
            else if(x == 'M') arr[i][j] = 1;
            else arr[i][j] = 2;
        }
    }
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            if(arr[i][j] == 2){
                pref[max(i-d,1)][max(j-d,1)]++;
                pref[max(i-d,1)][min(j+d+1,c+1)]--;
                pref[min((i+d+1),r+1)][max(j-d,1)]--;
                pref[min((i+d+1),r+1)][min(j+d+1,c+1)]++;
            }
        }
    }
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            pref[i][j]+=pref[i-1][j]+pref[i][j-1]-pref[i-1][j-1];
        }
    }
    int ans=0;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
        //  cout<<pref[i][j]<<" ";
        ans+=(pref[i][j]>=k&&arr[i][j]==1);
        }
        // cout<<endl;
    }
    cout << ans << 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...