제출 #959357

#제출 시각아이디문제언어결과실행 시간메모리
959357The_Samurai버섯 세기 (IOI20_mushrooms)C++17
25 / 100
8 ms628 KiB
#include "mushrooms.h" #include "bits/stdc++.h" using namespace std; int count_mushrooms(int n) { vector<int> zeros = {0}; const int cnt = 30, b = 25; for (int l = 1, r = b; l < n and zeros.size() < cnt; l += b, r += b) { r = min(r, n - 1); vector<int> v = {0}; for (int i = l; i <= r; i++) v.emplace_back(i); int x = use_machine(v); if (x == 0) { for (int i = l; i <= r; i++) zeros.emplace_back(i); continue; } if (x == 1) { if (use_machine({0, l})) continue; } for (int i = l; i <= r; i++) { if (use_machine({0, i}) == 0) zeros.emplace_back(i); } } 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...