제출 #481766

#제출 시각아이디문제언어결과실행 시간메모리
481766blue버섯 세기 (IOI20_mushrooms)C++17
56.64 / 100
11 ms308 KiB
#include "mushrooms.h" #include <vector> #include <iostream> using namespace std; const int X = 199; //199 int ceil_div(int a, int b) { return a/b + bool(a%b); } int count_mushrooms(int n) { if(n <= 100) { int ans = 1; for(int i = 1; i < n; i++) ans += !use_machine(vector<int>{0, i}); return ans; } 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...