Submission #475445

#TimeUsernameProblemLanguageResultExecution timeMemory
475445blueCounting Mushrooms (IOI20_mushrooms)C++17
55.39 / 100
13 ms328 KiB
#include "mushrooms.h" #include <vector> #include <iostream> using namespace std; const int X = 250; //199 int ceil_div(int a, int b) { return a/b + bool(a%b); } int count_mushrooms(int n) { vector<int> typ[2]; typ[0].push_back(0); for(int i = 1; i <= min(n-1, X); i++) typ[ use_machine(vector<int>{0, i}) ].push_back(i); vector<int> ans{(int)typ[0].size(), (int)typ[1].size()}; int base = (int)typ[0].size() > (int)typ[1].size() ? 0 : 1; int ct = (int)typ[base].size(); // cerr << ans[0] << ' ' << ans[1] << '\n'; for(int v = X+1; v < n; v += ct-1) { // cerr << "V = " << v << '\n'; vector<int> query{typ[base][0]}; for(int i = v; i < v+ct-1 && i < n; i++) { query.push_back(i); query.push_back(typ[base][i-v+1]); } int Q = use_machine(query); int rem = (int)query.size() - 1 - Q; ans[base] += rem/2; ans[!base] += Q/2; } return ans[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...