Submission #1054680

#TimeUsernameProblemLanguageResultExecution timeMemory
1054680Gromp15Counting Mushrooms (IOI20_mushrooms)C++17
56.78 / 100
6 ms600 KiB
#include <bits/stdc++.h> #include "mushrooms.h" #define sz(x) (int)x.size() using namespace std; const int len = 200; int count_mushrooms(int n) { vector<int> A{0}, B; for (int i = 1; i < min(n, len + 1); i++) { (use_machine({0, i}) ? B : A).push_back(i); } int ans = A.size(); bool inv = 0; if (A.size() < B.size()) swap(A, B), inv = 1; /* for (int x : A) cout << x << " "; cout << '\n'; for (int x : B) cout << x << " "; cout << '\n'; */ vector<int> cur{A[0]}; for (int j = len + 1, on = 1; j < n; j++) { if (on == sz(A)) { int res = use_machine(cur); ans += inv ? res / 2 : sz(cur) - sz(A) - res / 2; cur.clear(); cur.emplace_back(A[0]); on = 1; } cur.emplace_back(j); cur.emplace_back(A[on++]); } //cout << "LST " << cur.size()<< '\n'; if (cur.size() > 1) { int res = use_machine(cur); //cout << "R " << res << " " << ans << '\n'; ans += inv ? res / 2 : sz(cur) / 2 - res / 2; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...