Submission #959345

#TimeUsernameProblemLanguageResultExecution timeMemory
959345The_SamuraiCounting Mushrooms (IOI20_mushrooms)C++17
0 / 100
0 ms596 KiB
#include "mushrooms.h" #include "bits/stdc++.h" using namespace std; int count_mushrooms(int n) { vector<int> zeros = {0}; const int cnt = 5; while (zeros.size() < cnt) { if (use_machine({0, zeros.back() + 1}) == 0) { zeros.emplace_back(zeros.back() + 1); continue; } int lx = zeros.back() + 2, rx = n - 1, best = -1; int last_one = zeros.back() + 1; while (lx <= rx) { int mid = (lx + rx) >> 1; vector<int> v = {0}; for (int i = last_one; i <= mid; i++) v.emplace_back(i); if (use_machine(v) >= 2) { best = mid; rx = mid - 1; } else { last_one = mid; lx = mid + 1; } } if (best == -1) break; zeros.emplace_back(best); } if (zeros.size() < cnt) return zeros.size(); vector<int> unused; for (int i = zeros.back() + 1; i < n; i++) unused.emplace_back(i); int ans = zeros.size(); while (!unused.empty()) { int ln = min(unused.size(), zeros.size()); vector<int> v; for (int i = 0; i < ln; i++) { v.emplace_back(zeros[i]); v.emplace_back(unused.back()); unused.pop_back(); } ans += ln - (use_machine(v) + 1) / 2; } return ans; } // 0 -> 3 // 2 -
#Verdict Execution timeMemoryGrader output
Fetching results...