Submission #1139899

#TimeUsernameProblemLanguageResultExecution timeMemory
1139899grizoCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
6 ms6876 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define debug(v) \ cerr << "Line(" << __LINE__ << ") -> " << #v << " = " ; #define dbx(x) debug(x); cerr << x << "\n"; #define dbg(x) debug(x); cerr << "{ "; for(auto &e : x) cerr << e << ", "; cerr << "} \n"; #define log(x) (31^__builtin_clz(x)) const int N = 1e6+10, MOD = 1e9+7; void solve(){ int n, m, d, k; cin >> n >> m >> d >> k; vector<string> s(n); for(int i = 0 ; i < n ; i ++)cin >> s[i]; vector<vector<int>> pref(n+1, vector<int>(m+1)); // build the prefix sum array for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { pref[i][j] = (s[i-1][j-1] == 'S') + pref[i - 1][j] + pref[i][j - 1] - pref[i - 1][j - 1]; } } auto query = [&](int x1, int y1, int x2, int y2){ x1 = max(x1, 1); y1 = max(y1, 1); x2 = min(x2, n); y2 = min(y2, m); return pref[x2][y2] - pref[x1 - 1][y2] - pref[x2][y1 - 1] + pref[x1 - 1][y1 - 1]; }; int ans = 0; for(int i = 0 ; i < n ; i ++){ for(int j = 0 ; j < m ; j ++){ if(s[i][j] == 'M'){ if(query(i+1-d, j+1-d, i+1+d, j+1+d) >= k)ans++; } } } cout << ans << "\n"; } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout.tie(nullptr); // freopen("king2.in", "r", stdin); // freopen("king2.out", "w", stdout); int tc = 1; // cin >> tc; for(int t = 1 ; t <= tc ; t ++){ solve(); } return 0; } /* */
#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...