Submission #346101

#TimeUsernameProblemLanguageResultExecution timeMemory
346101jDO_Counting Mushrooms (IOI20_mushrooms)C++17
0 / 100
55 ms708 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); int i = 2; int m = 10000; 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(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(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++; } } 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++; } int ans = use_machine(in); 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); cou += a.size()-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; } 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...