Submission #689761

#TimeUsernameProblemLanguageResultExecution timeMemory
689761zeroesandonesCollecting Mushrooms (NOI18_collectmushrooms)C++17
100 / 100
19 ms16968 KiB
#include "bits/stdc++.h" using namespace std; typedef long long ll; typedef long double ld; typedef vector<ll> vi; typedef pair<ll, ll> pi; #define FOR(i, j, k) for (ll i = j; i < (ll) k; ++i) #define FORD(i, j, k) for (ll i = j; i >= (ll) k; --i) #define nl "\n" #define sp " " #define all(x) (x).begin(), (x).end() #define sc second #define fr first #define pb push_back void solve() { ll n, m, d, k; cin >> n >> m >> d >> k; vector<pi> mush; ll sum[n + 1][m + 1] = {}; FOR(i, 1, n + 1) { FOR(j, 1, m + 1) { char c; cin >> c; ll cost = 0; if(c == 'S') cost = 1; else if(c == 'M') mush.pb({i, j}); sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + cost; } } ll ans = 0; for(auto [x, y] : mush) { ll leftN = max(1LL, x - d); ll rightN = min(x + d, n); ll leftM = max(1LL, y - d); ll rightM = min(y + d, m); ll curr = sum[rightN][rightM] - sum[leftN - 1][rightM] - sum[rightN][leftM - 1] + sum[leftN - 1][leftM - 1]; if(curr >= k) ++ans; } cout << ans << nl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll t = 1; // cin >> t; while (t--) { solve(); } }
#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...