Submission #987761

#TimeUsernameProblemLanguageResultExecution timeMemory
987761AdamGSCounting Mushrooms (IOI20_mushrooms)C++17
82.18 / 100
7 ms964 KiB
#include "mushrooms.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define rep(a, b) for(int a = 0; a < (b); ++a) #define st first #define nd second #define pb push_back #define all(a) a.begin(), a.end() int count_mushrooms(int n) { vector<int>A, B; A.pb(0); int l=1, ans=0; while(l<n) { if(A.size()>=B.size()) { int p=min(n-l, (int)A.size()); if(A.size()<=7) p=min(p, 2); vector<int>T; rep(i, p) { T.pb(A[i]); T.pb(l); ++l; } int x=use_machine(T); if(p==2) { if(x==0) { A.pb(l-2); A.pb(l-1); } else if(x==1) { A.pb(l-2); B.pb(l-1); } else if(x==2) { B.pb(l-2); A.pb(l-1); } else { B.pb(l-2); B.pb(l-1); } } else { if(x%2==0) A.pb(l-1); else B.pb(l-1); ans+=p-1-x/2; } } else { int p=min(n-l, (int)B.size()); if(B.size()<=7) p=min(p, 2); vector<int>T; rep(i, p) { T.pb(B[i]); T.pb(l); ++l; } int x=use_machine(T); if(p==2) { if(x==0) { B.pb(l-2); B.pb(l-1); } else if(x==1) { B.pb(l-2); A.pb(l-1); } else if(x==2) { A.pb(l-2); B.pb(l-1); } else { A.pb(l-2); A.pb(l-1); } } else { if(x%2==0) B.pb(l-1); else A.pb(l-1); ans+=x/2; } } } ans+=A.size(); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...