Submission #885233

#TimeUsernameProblemLanguageResultExecution timeMemory
885233epicci23Counting Mushrooms (IOI20_mushrooms)C++17
44.58 / 100
8 ms1028 KiB
#include "mushrooms.h" #include "bits/stdc++.h" using namespace std; typedef long long ll; #define pb push_back #define sz(x) ((int)(x).size()) const int BL = 50; const int BL2 = 49; int count_mushrooms(int n){ int ar[n+5],ans=1; memset(ar,-1,sizeof(ar)); ar[0]=1; vector<int> ind_a,ind_b; ind_a.pb(0); for(int i=1;i<=min(n-1,2*BL);i++){ int xd = use_machine({0,i}); if(xd==0){ ar[i]=1; ans++; ind_a.pb(i); } else{ ar[i]=0; ind_b.pb(i); } } if(n-1<=2*BL) return ans; for(int i=2*BL+1;i<n;i+=BL2){ vector<int> que; for(int j=i;j<min(n,i+BL2);j++) que.pb(j); if(sz(ind_a)>sz(que)){ vector<int> haha; haha.pb(ind_a[0]); for(int j=0;j<sz(que);j++){ haha.pb(que[j]); haha.pb(ind_a[j+1]); } int res = use_machine(haha); ans += sz(que) - res/2; } else{ vector<int> haha; haha.pb(ind_b[0]); for(int j=0;j<sz(que);j++){ haha.pb(que[j]); haha.pb(ind_b[j+1]); } int res = use_machine(haha); ans += res/2; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...