Submission #1300529

#TimeUsernameProblemLanguageResultExecution timeMemory
1300529danglayloi1Collecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
16 ms9660 KiB
#include <bits/stdc++.h>
#define ii pair<int, int>
#define fi first
#define se second
#define inf 0x3f3f3f3f3f3f3f3f
using namespace std;
using ll = long long;
const ll mod=1e9+7;
const int nx=5e5+5;
int n, m, d, k, ans=0;
vector<vector<char>> a;
vector<vector<int>> s;
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    cin>>n>>m>>d>>k;
    a.assign(n+2, vector<char>(m+2));
    s.assign(n+2, vector<int>(m+2, 0));
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            cin>>a[i][j];
            if(a[i][j]=='S')
            {
                int x=max(1, i-d), y=max(1, j-d);
                int u=min(n, i+d), v=min(m, j+d);
                s[x][y]++;
                s[u+1][y]--;
                s[x][v+1]--;
                s[u+1][v+1]++;
            }
        }
    }
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
            if(a[i][j]=='M' && s[i][j]>=k) 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...