Submission #1271313

#TimeUsernameProblemLanguageResultExecution timeMemory
1271313zulmuwCollecting Mushrooms (NOI18_collectmushrooms)C++20
100 / 100
24 ms36924 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int r, c, d, k; vector<pair<int,int>> vm, vs; vector<vector<int>> ps; signed main() { ios::sync_with_stdio(0); cin.tie(0); cin >> r >> c >> d >> k; ps.assign(r+5, vector<int> (c+5, 0)); for (int i=0; i<r; ++i) { string s; cin >> s; for (int j=0; j<c; ++j) { if (s[j] == 'S') { vs.push_back({i, j}); } if (s[j] == 'M') { vm.push_back({i, j}); } } } for (auto [a, b] : vs) { int ul1 = max(0LL, a-d), ul2 = max(0LL, b-d); int dr1 = min(r, a+d), dr2 = min(c, b+d); // cout << a << " " << b << "\n"; // cout << " -> " << ul1 << " " << ul2 << " "<< dr1 << " "<< dr2 << "\n"; ps[ul1][ul2]++; ps[dr1+1][ul2]--; ps[ul1][dr2+1]--; ps[dr1+1][dr2+1]++; // for (int i = 0; i < r; ++i) { // for (int j = 0; j < c; ++j) { // cout << ps[i][j] << " "; // } // cout << "\n"; // } // cout << "\n\n"; } for (int i=1; i<r; ++i) { for (int j=0; j<c; ++j) { ps[i][j] += ps[i-1][j]; } } for (int i=0; i<r; ++i) { for (int j=1; j<c; ++j) { ps[i][j] += ps[i][j-1]; } } int ans = 0; for (auto [a, b]: vm) { if (ps[a][b] >= 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...