Submission #815502

#TimeUsernameProblemLanguageResultExecution timeMemory
815502JakobZorz드문 곤충 (IOI22_insects)C++17
0 / 100
3080 ms208 KiB
#include"insects.h" #include<iostream> #include<vector> #include<set> using namespace std; vector<bool>inside; vector<bool>dead; int num_inside; int n,distinct; int c_press_button(){ return press_button(); } void c_move_inside(int a){ inside[a]=true; num_inside++; move_inside(a); } void c_move_outside(int a){ inside[a]=false; num_inside--; move_outside(a); } int get_distinct(){ for(int i=0;i<n;i++){ c_move_inside(i); if(c_press_button()>1) c_move_outside(i); } return num_inside; } int min_cardinality(int N){ n=N; inside.resize(n); distinct=get_distinct(); dead=inside; int f=1; int r=N-distinct; while(distinct<=r){ int c=(r+2*distinct+1)/(2*distinct); for(int i=0;i<n;i++) if(!dead[i]&&inside[i]&&num_inside>distinct*f+c) c_move_outside(i); for(int i=0;i<n;i++) if(!dead[i]&&!inside[i]){ c_move_inside(i); if(c_press_button()>f+c) c_move_outside(i); } if(num_inside==(f+c)*distinct){ f+=c; for(int i=0;i<n;i++) if(!dead[i]&&inside[i]){ r--; dead[i]=true; } }else{ for(int i=0;i<n;i++) if(!dead[i]&&!inside[i]){ r--; dead[i]=true; } } } return f; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...