| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1333176 | hyyh | Sorting (IOI15_sorting) | C++20 | 0 ms | 0 KiB |
#include "insects.h"
#include <bitset>
#include <iostream>
using namespace std;
bitset<2000> bs;
int S;
int k = 0;
bool check(int n){
if(n == 1) return true;
int si = k;
for(int i{};i < S;i++){
if(bs[i]) continue;
move_inside(i);
si++;
int p = press_button();
if(p > n){
move_outside(i);
si--;
}
}
//cout << si << " " << n << " " << k << endl;
return (si == n*k);
}
int min_cardinality(int N) {
S = N;
for(int i{};i < N;i++){
move_inside(i);
int p = press_button();
if(p == 2){
move_outside(i);
}
else k++,bs[i] = 1;
}
int l = 1;
int r = N/k;
int ans = 0;
while(l <= r){
int md = l+(r-l)/2;
//cout << md << endl;
if(check(md)) ans = max(ans,md),l = md+1;
else r = md-1;
}
return ans;
}