Submission #652302

#TimeUsernameProblemLanguageResultExecution timeMemory
652302coding_snorlaxCounting Mushrooms (IOI20_mushrooms)C++14
56.93 / 100
11 ms336 KiB
#include "mushrooms.h" #include<bits/stdc++.h> using namespace std; int count_mushrooms(int n){ int answer=0; vector<int> s={0}; vector<int> A={0}; vector<int> B; for(int i=1;i<min(n,200);i++){ s.push_back(i); if(use_machine(s)) B.push_back(i); else A.push_back(i); s.pop_back(); } answer=(int)A.size(); if(n<=200) return (int)A.size(); vector<int> Out; int Mark=0; if(A.size()>=100){ for(int i=0;i<100;i++){ Out.push_back(A[i]); Out.push_back(-1); } } else{ for(int i=0;i<100;i++){ Out.push_back(B[i]); Out.push_back(-1); } Mark=1; } for(int i=0;i<(n-200)/100;i++){ for(int j=0;j<100;j++){ Out[2*j+1]=200+100*i+j; } int num=use_machine(Out); if(Mark && num%2){ answer++; answer+=num/2; } else if(Mark){ answer+=num/2; } else if(!Mark && num%2){ answer+=100-num/2-1; } else{ answer+=100-num/2; } } vector<int> New; if(n%100){ if(A.size()>=100){ for(int i=0;i<n%100;i++){ New.push_back(A[i]); New.push_back(n-n%100+i); } } else{ for(int i=0;i<n%100;i++){ New.push_back(B[i]); New.push_back(n-n%100+i); } Mark=1; } int num=use_machine(New); if(Mark && num%2){ answer++; answer+=num/2; } else if(Mark){ answer+=num/2; } else if(!Mark && num%2){ answer+=n%100-num/2-1; } else{ answer+=n%100-num/2; } } return answer; }
#Verdict Execution timeMemoryGrader output
Fetching results...