제출 #346319

#제출 시각아이디문제언어결과실행 시간메모리
346319lLab_버섯 세기 (IOI20_mushrooms)C++14
0 / 100
10 ms576 KiB
#include "mushrooms.h" #include <bits/stdc++.h> using namespace std; vector<int> A = {0}; vector<int> B; int count_mushrooms(int n) { int sum = 1; int i=1; while(i<500&&i<n){ vector<int> S; int nA = A.size(); int cnt = 0; for(int j=0;j<min(nA,2)&&i<n;++j){ S.push_back(A[j]); S.push_back(i); i++; cnt++; } int d = use_machine(S); sum += cnt-(d+1)/2; if(d == 0 && cnt == 2){ A.push_back(i-2); A.push_back(i-1); } else if(d == 1 && cnt == 2){ A.push_back(i-2); B.push_back(i-1); } else if(d%2 == 0){ A.push_back(i-1); B.push_back(i-2); }else{ B.push_back(i-1); B.push_back(i-2); } } while(i<n){ vector<int> S; int nA = A.size(); int nB = B.size(); int cnt = 0; for(int j=0;j<max(nA,nB)&&i<n;++j){ if(nA >= nB) S.push_back(A[j]); else S.push_back(B[j]); S.push_back(i); i++; cnt++; } int d = use_machine(S); if(nA>=nB)sum += cnt-(d+1)/2; else sum += (d+1)/2; if(d == 0){ for(int j=1;j<=cnt;++j){ A.push_back(i-j); } }else if(d == cnt*2-1){ for(int j=1;j<=cnt;++j){ B.push_back(i-j); } } else if(d%2 == 0) A.push_back(i-1); else B.push_back(i-1); } return sum; }
#Verdict Execution timeMemoryGrader output
Fetching results...