Submission #408900

#TimeUsernameProblemLanguageResultExecution timeMemory
408900AmineTrabelsiCounting Mushrooms (IOI20_mushrooms)C++14
27.26 / 100
16 ms452 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; const int K = 100; /* int small(int n){ vector<int> m; int ans = 1; for (int i = 1; i < n; i++) ans += (use_machine({0,i}) == 0); return ans; } */ int count_mushrooms(int n) { /* if(n <= 200){ return small(n); }*/ bool type; // 0 if A 1 if B vector<int> known; int ind = 1; int ans = 1; // part one type = 0; known.push_back(0); // part two vector<int> m; int i = 0; while(ind < n){ if(i < (int)known.size()){ m.push_back(known[i]); m.push_back(ind); ind++; i++; } if(i == (int)known.size() || ind == n){/* for(auto x:m)cerr<<x<<" "; cerr<<'\n';*/ int cnt = use_machine(m); //cerr<<cnt<<'\n'; int elem = m.size(); if(!(cnt&1)){ known.push_back(m.back()); if(type == 0)ans++; }else if(type)ans++; cnt -= cnt&1; elem-=2; int kn = elem/2; if(type){ ans += cnt/2; }else ans += kn-(cnt/2); m.clear(); i = 0; //cerr<<ans<<'\n'; } } return ans; } /* 21 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 _ = A _A 0 _B 1 _A_A 0 _A_B 1 _B_A 2 _B_B 3 _ = B _A = 1 _B = 0 _B_B 0 _B_A 1 _A_B 2 _A_A 3 */
#Verdict Execution timeMemoryGrader output
Fetching results...