제출 #1211916

#제출 시각아이디문제언어결과실행 시간메모리
1211916simona1230Rarest Insects (IOI22_insects)C++20
0 / 100
0 ms408 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; int min_cardinality(int N) { int d=0; vector<int> v; for(int i=0;i<N;i++) { move_inside(i); int x=press_button(); if(x==2) move_outside(i); else v.push_back(i),d++; } for(int i=0;i<v.size();i++) move_outside(v[i]); vector<int> s; for(int i=0;i<N;i++) s.push_back(i); int b=0; int ans=1,l=2,r=N/d; while(l<=r) { int m=(l+r)/2; //cout<<l<<" "<<r<<" "<<m<<endl; vector<int> s1,s2; int f=0; int cnt=0,lim=s.size()-d*(m-ans); for(int i=0;i<s.size()&&!f;i++) { //cout<<s[i]<<" "; move_inside(s[i]); int x=press_button(); if(x==m+1-ans) { s1.push_back(s[i]); move_outside(s[i]); cnt++; } else { s2.push_back(s[i]); } if(cnt>lim) { r=m-1; s=s2; for(int j=0;j<s2.size();j++) move_outside(s2[j]); f=1; break; } } if(f==1)continue; //cout<<endl; for(int i=0;i<s2.size();i++) move_outside(s2[i]); //cout<<"= "<<s2.size()<<" "<<d<<" "<<m-ans<<endl; if(s2.size()==d*(m-ans)) { ans=m; s=s1; l=m+1; } else r=m-1,s=s2; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...