Submission #346139

#TimeUsernameProblemLanguageResultExecution timeMemory
346139jDO_Counting Mushrooms (IOI20_mushrooms)C++17
92.24 / 100
9 ms492 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; int count_mushrooms(int n) { vector<int> a; vector<int> b; vector<int> a1; vector<int> b1; vector<int> in; int cou = 1; a.push_back(0); a1.push_back(0); int i = 2; int m = 88; in.push_back(0); in.push_back(1); if(use_machine(in) == 1){ b.push_back(1); b1.push_back(1); } else{ a.push_back(1); a1.push_back(1); cou++; } if(n > 2){ if(a1.size() != 2){ in.pop_back(); in.push_back(2); if(use_machine(in) == 1){ b.push_back(2); b1.push_back(2); } else{ a.push_back(2); a1.push_back(2); cou++; } i++; } if(a1.size() == 2){ while(m--){ in.clear(); if(i >= n) break; for(auto x: a1){ if(i >= n) break; in.push_back(x); in.push_back(i); i++; } int ans = use_machine(in); if(in.size() == 4){ if(ans/2 == 1) b.push_back(i-2); else a.push_back(i-2), cou++; } if(ans%2 == 1) b.push_back(i-1); else a.push_back(i-1), cou++; // cout << cou << endl; } } else{ while(m--){ if(i >= n) break; in.clear(); for(auto x: b1){ if(i >= n) break; in.push_back(x); in.push_back(i); i++; } // for(auto x:in){ // cout << x << ' '; // } // cout << endl; int ans = use_machine(in); if(in.size() == 4){ if(ans/2 == 1) a.push_back(i-2), cou++; else b.push_back(i-2); } if(ans%2 == 1) a.push_back(i-1), cou++; else b.push_back(i-1); } } } while(i < n){ // cout << i << '\n'; in.clear(); if(a.size() > b.size()){ for(auto x: a){ if(i >= n) break; in.push_back(x); in.push_back(i); i++; if(i >= n) break; } int ans = use_machine(in); // for(auto x:in){ // cout << x << ' '; // } // cout << endl; cou += (in.size()/2)-1 - (ans/2); if(ans%2 == 0) a.push_back(i-1), cou++; else b.push_back(i-1); } else{ for(auto x: b){ if(i >= n) break; in.push_back(x); in.push_back(i); i++; if(i >= n) break; } // for(auto x: b){ // cout << x << ' '; // } int ans = use_machine(in); cou += ans/2; if(ans%2 == 1) a.push_back(i-1), cou++; else b.push_back(i-1); } } return cou; }
#Verdict Execution timeMemoryGrader output
Fetching results...