제출 #307762

#제출 시각아이디문제언어결과실행 시간메모리
307762CodePlatina버섯 세기 (IOI20_mushrooms)C++14
56.93 / 100
12 ms492 KiB
#include "mushrooms.h" #include <vector> using namespace std; int count_mushrooms(int n) { if(n <= 200) { int ret = 1; for(int i = 1; i < n; i += 2) { if(i == n - 1) ret += 1 - use_machine({0, i}); else ret += 2 - use_machine({i, 0, i + 1}); } return ret; } else { int ret = 1; vector<int> A, B; A.push_back(0); for(int i = 1; i <= 200; ++i) { int t = use_machine({0, i}); if(t == 0) A.push_back(i), ++ret; else B.push_back(i); } if(A.size() >= B.size()) { for(int i = 201; i < n; i += (int)A.size()) { int cnt = 0; vector<int> tmp; for(int j = i; j < n && j < i + (int)A.size(); ++j) { ++cnt; tmp.push_back(A[j - i]); tmp.push_back(j); } int t = use_machine(tmp); if(t & 1) ++t; t /= 2; ret += cnt - t; } } else { swap(A, B); for(int i = 201; i < n; i += (int)A.size()) { int cnt = 0; vector<int> tmp; for(int j = i; j < n && j < i + (int)A.size(); ++j) { ++cnt; tmp.push_back(A[j - i]); tmp.push_back(j); } int t = use_machine(tmp); if(t & 1) ++t; t /= 2; ret += t; } } return ret; } }
#Verdict Execution timeMemoryGrader output
Fetching results...