Submission #898974

#TimeUsernameProblemLanguageResultExecution timeMemory
898974abcvuitunggioCounting Mushrooms (IOI20_mushrooms)C++17
77.66 / 100
7 ms732 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; const int k=40; vector <int> a,b; int t,res,sz; int count_mushrooms(int n){ if (n<=227){ for (int i=1;i<n;i++) res+=1-use_machine({0,i}); return res+1; } a.push_back(0); for (int i=1;i<=k*2;i++){ if (max(a.size(),b.size())==k) break; int x=use_machine({0,i}); if (x) b.push_back(i); else a.push_back(i); } t=(a.size()!=k); if (a.size()!=k) swap(a,b); res=b.size(); for (int i=a.size()+b.size();i<n;){ if (i==n-1){ res+=abs(t-use_machine({0,i})); continue; } vector <int> ve; for (int j=i;j<min(i+(int)a.size(),n);j++){ ve.push_back(j); ve.push_back(a[j-i]); } int x=use_machine(ve); res+=(x+1)/2; if (x&1) b.push_back(i); else a.push_back(i); if (a.size()<b.size()){ res=min(i+(int)a.size(),n)-res; swap(a,b); t^=1; } i=ve[ve.size()-2]+1; } return (t?res:n-res); }
#Verdict Execution timeMemoryGrader output
Fetching results...