Submission #1058442

#TimeUsernameProblemLanguageResultExecution timeMemory
1058442epicci23Rarest Insects (IOI22_insects)C++17
50 / 100
93 ms860 KiB
#include "bits/stdc++.h" #include "insects.h" #define all(v) v.begin() , v.end() #define sz(a) (int)a.size() using namespace std; vector<int> mach; void clear_mach(){ while(!mach.empty()){ move_outside(mach.back()); mach.pop_back(); } } int solve(vector<int> cand){ if(sz(cand)==1) return 1; mach.push_back(0); move_inside(0); vector<int> tk,hm; tk.push_back(0); for(int i=1;i<sz(cand);i++){ move_inside(i); mach.push_back(i); if(press_button()==1) tk.push_back(i); else{ hm.push_back(i); move_outside(i); mach.pop_back(); } } int n=sz(tk),m=sz(hm); if(n==1) return sz(cand); if(m<n) return 1; int L[m],R[m]; for(int i=0;i<m;i++){ L[i]=0; R[i]=n-1; } for(int j=0;j<=__lg(n);j++){ clear_mach(); vector<int> dene[n]; for(int i=0;i<m;i++) if(L[i]!=R[i]) dene[(L[i]+R[i])/2].push_back(i); for(int i=0;i<n;i++){ move_inside(tk[i]); mach.push_back(tk[i]); for(int x:dene[i]){ move_inside(hm[x]); mach.push_back(hm[x]); if(press_button()==2) R[x]=i; else L[x]=i+1; move_outside(hm[x]); mach.pop_back(); } } } int ans=sz(cand); vector<int> mark(n,1); for(int i=0;i<m;i++) mark[L[i]]++; for(int i=0;i<n;i++) ans=min(ans,mark[i]); return ans; } int min_cardinality(int n){ vector<int> res; for(int i=0;i<n;i++) res.push_back(i); return solve(res); } /*void _(){ } int32_t main(){ cin.tie(0); ios::sync_with_stdio(0); int tc=1;//cin >> tc; while(tc--) _(); return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...