Submission #697408

#TimeUsernameProblemLanguageResultExecution timeMemory
697408vjudge1Collecting Mushrooms (NOI18_collectmushrooms)C++17
79 / 100
12 ms5588 KiB
#include <bits/stdc++.h>

using namespace std;

int t[10000][10000];
char cc[10000][10000];

int main(){
    cin.tie(0)->sync_with_stdio(0);
    int r,c,d,k,cnt=0,i,j;
    cin>>r>>c>>d>>k;
    for(i=1;i<=r;i++){
        for(j=1;j<=c;j++){
            cin>>cc[i][j];
            if(cc[i][j]=='S'){
                int ar=i-d,ac=j-d,br=i+d,bc=j+d;
                if(ar<1)ar=1;
                if(ac<1)ac=1;
                if(br>r)br=r;
                if(bc>c)bc=c;
                t[ar][ac]++;
                t[ar][bc+1]--;
                t[br+1][ac]--;
                t[br+1][bc+1]++;
            }
        }
    }
    for(i=1;i<=r;i++){
        for(j=1;j<=c;j++){
            t[i][j]+=t[i-1][j]+t[i][j-1]-t[i-1][j-1];
            if(cc[i][j]=='M'&&t[i][j]>=k) cnt++;
        }
    }
    /*for(i=1;i<=r;i++){
        for(j=1;j<=c;j++){
            cout<<t[i][j];
        }
        cout<<"\n";
    }*/
    cout<<cnt;
}
#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...