Submission #1294801

#TimeUsernameProblemLanguageResultExecution timeMemory
1294801ChuanChen버섯 세기 (IOI20_mushrooms)C++20
56.78 / 100
4 ms496 KiB
#include "mushrooms.h" #include<bits/stdc++.h> using namespace std; const unsigned int OPT = 100; int ans; vector<int> A, B; queue<int> q; int count_mushrooms(int n) { vector<int> m; A.push_back(0); for(int i = 1; i < n; i++){ q.push(i); } while(q.size() && A.size() <= OPT && B.size() <= OPT){ int c1 = q.front(); q.pop(); // if(q.empty()){ int verdic = use_machine({c1, A[0]}); if(verdic == 0) A.push_back(c1); else B.push_back(c1); // break; // } // // int c2 = q.front(); q.pop(); // // int verdic = use_machine({c1, A[0], c2}); // if(verdic == 0){ // A.push_back(c1); // A.push_back(c2); // } // else if(verdic == 2){ // B.push_back(c1); // B.push_back(c2); // } // else{ // int verdic2 = use_machine({A[0], c1}); // if(verdic2 == 1){ // A.push_back(c2); // B.push_back(c1); // } // else{ // A.push_back(c1); // B.push_back(c2); // } // } } while(!q.empty()){ if(A.size() < B.size()){ //use B vector<int> m(min(2*B.size()-1, 2*q.size()+1)); for(int i = 0; i < (int)m.size(); i+=2) m[i] = B[i/2]; for(int i = 1; i < (int)m.size(); i+=2){ m[i] = q.front(); q.pop(); } int verdic = use_machine(m); ans += verdic/2; } else{ vector<int> m(min(2*A.size()-1, 2*q.size()+1)); for(int i = 0; i < (int)m.size(); i+=2) m[i] = A[i/2]; for(int i = 1; i < (int)m.size(); i+=2){ m[i] = q.front(); q.pop(); } int verdic = use_machine(m); ans += m.size()/2-verdic/2; } } return A.size()+ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...