Submission #668254

#TimeUsernameProblemLanguageResultExecution timeMemory
668254600MihneaCollecting Mushrooms (NOI18_collectmushrooms)C++17
0 / 100
16 ms5316 KiB
#include <bits/stdc++.h> using namespace std; int main() { #ifdef ONPC freopen ("input.txt", "r", stdin); #endif // ONPC #ifndef ONPC ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); #endif // ONPC int n, m, r, need; cin >> n >> m >> r >> need; vector<pair<int, int>> mus, spr; for (int i = 0; i < n; i++) { string s; cin >> s; assert((int) s.size() == m); for (int j = 0; j < m; j++) { char ch = s[j]; if (ch == '.') { continue; } if (ch == 'S') { spr.push_back({i, j}); continue; } if (ch == 'M') { mus.push_back({i, j}); continue; } assert(0); } } int sol = 0; sort(mus.begin(), mus.end()); sort(spr.begin(), spr.end()); int p1 = 0, p2 = 0; int dim = m + 7; vector<int> t(dim, 0); auto add = [&] (int pos, int x) { pos++; for (int i = pos; i < dim; i += i & (-i)) { t[i] += x; } }; auto get = [&] (int pos) { pos++; int sol = 0; for (int i = pos; i >= 1; i -= i & (-i)) { if (i < dim) sol += t[i]; } return sol; }; for (auto &it : mus) { while (p1 < (int) spr.size() && spr[p1].first <= it.first + r) { /// add(spr[p1].second, +1); p1++; } while (p2 < (int) spr.size() && spr[p2].first < it.first - r) { //add(spr[p2].second, -1); p2++; } int cnt = 0; for (int j = p2; j < p1; j++) { int d = abs(spr[j].second - it.second); if (d <= r) { cnt++; } } /// assert(cnt == get(it.second + r) - get(it.second - r - 1)); sol += (get(it.second + r) - get(it.second - r - 1) >= need); } cout << sol << "\n"; }

Compilation message (stderr)

mushrooms.cpp: In function 'int main()':
mushrooms.cpp:52:8: warning: variable 'add' set but not used [-Wunused-but-set-variable]
   52 |   auto add = [&] (int pos, int x)
      |        ^~~
#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...