제출 #1173858

#제출 시각아이디문제언어결과실행 시간메모리
1173858ezzzayCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
30 ms24248 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
const int N=3e5+5;
signed main(){
    int n,m,d,k;
    cin>>n>>m>>d>>k;
    vector<vector<char>> a(n+4, vector<char>(m+3));
    vector<vector<int>> cnt(n+4, vector<int>(m+3));
    vector<vector<int>> ps(n+4, vector<int>(m+3));
    vector<vector<int>>vc;
    
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
            if(a[i][j]=='S'){
                int y1=max(1,i-d);
                int y2=min(n,i+d);
                int x1=max(1,j-d);
                int x2=min(m,j+d);
                ps[y1][x1]++;
                ps[y1][x2+1]--;
                ps[y2+1][x1]--;
                ps[y2+1][x2+1]++;
            }
        }
    }
    
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            ps[i][j]+=ps[i][j-1];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            ps[i][j]+=ps[i-1][j];
        }
    }
    int p=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(a[i][j]=='M'){
                int h=ps[i][j];
                if(h>=k)p++;
            }
        }
    }
    cout<<p;
}
#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...