제출 #1237995

#제출 시각아이디문제언어결과실행 시간메모리
1237995meisean2009Collecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
26 ms15544 KiB
#include <bits/stdc++.h>
using namespace std;
int r,c,d,k,ans=0;
int main(){
    //freopen("min.txt","r",stdin);
    cin>>r>>c>>d>>k;
    vector<vector<char> > mp(r+2,vector<char>(c+2,' '));
    vector<vector<int> > a(r+2,vector<int>(c+2,0));
    vector<vector<int> > pref(r+2,vector<int>(c+2,0));

    for (int i=1;i<=r;i++){
        for (int j=1;j<=c;j++){
            cin>>mp[i][j];
            if (mp[i][j]=='S'){
                a[min(r+1,i+d+1)][min(c+1,j+d+1)]++;//bottom right corner
                a[max(1,i-d)][max(1,j-d)]++;
                a[max(1,i-d)][min(c+1,j+d+1)]--;
                a[min(r+1,i+d+1)][max(1,j-d)]--;
                
            }
        }
    }

    for (int i=1;i<=r;i++){
        for (int j=1;j<=c;j++){
            pref[i][j] = a[i][j]+pref[i-1][j]+pref[i][j-1]-pref[i-1][j-1];
            if (pref[i][j]>=k&&mp[i][j]=='M'){
                ans++;
            }
            
        }
    }

    cout<<ans;

}
#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...