Submission #346322

#TimeUsernameProblemLanguageResultExecution timeMemory
346322lLab_Counting Mushrooms (IOI20_mushrooms)C++14
88.98 / 100
11 ms620 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; vector<int> A = {0}; vector<int> B; int count_mushrooms(int n) { int sum = 1; int i=1; while(i<78&&i<n){ vector<int> S; int nA = A.size(); int cnt = 0; for(int j=0;j<min(nA,2)&&i<n;++j){ S.push_back(A[j]); S.push_back(i); i++; cnt++; } int d = use_machine(S); sum += cnt-(d+1)/2; if(d == 0 && cnt == 2){ A.push_back(i-2); A.push_back(i-1); } else if(d == 1 && cnt == 2){ A.push_back(i-2); B.push_back(i-1); } else if(d%2 == 0 && cnt == 2){ A.push_back(i-1); B.push_back(i-2); }else if(cnt == 2){ B.push_back(i-1); B.push_back(i-2); }else if(d%2 == 0){ A.push_back(i-1); }else{ B.push_back(i-1); } } while(i<n){ vector<int> S; int nA = A.size(); int nB = B.size(); int cnt = 0; for(int j=0;j<max(nA,nB)&&i<n;++j){ if(nA >= nB) S.push_back(A[j]); else S.push_back(B[j]); S.push_back(i); i++; cnt++; } int d = use_machine(S); if(nA>=nB) sum += cnt-(d+1)/2; else sum += (d+1)/2; if(nA >= nB){ if(d%2 == 0) A.push_back(i-1); else B.push_back(i-1); }else{ if(d%2 == 0) B.push_back(i-1); else A.push_back(i-1); } } return sum; }
#Verdict Execution timeMemoryGrader output
Fetching results...