Submission #1273516

#TimeUsernameProblemLanguageResultExecution timeMemory
1273516jumpRarest Insects (IOI22_insects)C++20
0 / 100
1 ms400 KiB
void move_inside(int i); void move_outside(int i); int press_button(); int min_cardinality(int N); #include <iostream> #include <vector> #include <set> int size; int type; bool markBS[2010]; std::set<int> ins; int cnt=0; bool bs(int lim){ for(int i=0;i<size;i++){ if(markBS[i])continue; move_inside(i); if(press_button()>lim){ move_outside(i); } else{ cnt+=1; ins.insert(i); } if(cnt>=lim*type){ for(auto mu:ins){ markBS[mu]=true; } return true; } //std::cout <<cnt << '*'; } for(int i=0;i<size;i++){ markBS[i]=true; } for(auto mu:ins){ markBS[mu]=false; move_outside(mu); cnt-=1; } ins.clear(); return false; } int pbv; std::set<int> clearList; int clear(){ for(auto c:clearList){ move_outside(c); } clearList.clear(); return 0; } int minL(){ int count = 0; for(int i=0;i<size;i++){ move_inside(i); pbv = press_button(); if(pbv>1){ move_outside(i); } else{ count+=1; clearList.insert(i); } } clear(); return count; } int min_cardinality(int N) { size=N; type = minL(); if(type==1)return size; int l=2,r=size/type; while(l<r){ int mid = (l+r+1)/2; if(bs(mid)){ l=mid; } else{ r=mid-1; } //std::cout << cnt << ' ' << l << ' ' << mid << ' ' << r << '\n'; } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...