Submission #1047049

#TimeUsernameProblemLanguageResultExecution timeMemory
1047049MarwenElarbiCounting Mushrooms (IOI20_mushrooms)C++17
0 / 100
1 ms344 KiB
#include <bits/stdc++.h> using namespace std; #include "mushrooms.h" #define pb push_back int count_mushrooms(int n) { if(n==2) return 1+(1-use_machine({1,0})); vector<int> aa; aa.pb(0); vector<int> bb; int lst=3; ( use_machine({0,1}) ? bb.pb(1) : aa.pb(1)); ( use_machine({0,2}) ? bb.pb(2) : aa.pb(2)); for (int i = 3; i+1 < min(n,202); i+=2) { if(aa.size()>=100||bb.size()>=100) break; lst=i+2; int cur; if(aa.size()>=2){ cur=use_machine({i,aa[0],i+1,aa[1]}); if(cur==0){ aa.pb(i); aa.pb(i+1); }else if(cur==2){ aa.pb(i); bb.pb(i+1); }else if(cur==3){ bb.pb(i); bb.pb(i+1); } } else{ cur=use_machine({i,bb[0],i+1,bb[1]}); if(cur==0){ bb.pb(i); bb.pb(i+1); }else if(cur==2){ bb.pb(i); aa.pb(i+1); }else if(cur==3){ aa.pb(i); aa.pb(i+1); } } } int ans=aa.size(); for (int i = lst; i < n; i+=99) { vector<int> cur; int k=0; cur.pb((aa.size()>bb.size() ? aa[k++] : bb[k++])); for (int j = 0; j < min(n-i,99); ++j) { cur.pb(j+i); cur.pb((aa.size()>bb.size() ? aa[k++] : bb[k++])); } int cnt=use_machine(cur); ans+=(aa.size()<=bb.size() ? cnt/2 : cur.size()-k-cnt/2); } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...