제출 #686470

#제출 시각아이디문제언어결과실행 시간메모리
68647079brueRarest Insects (IOI22_insects)C++17
100 / 100
65 ms416 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int n, k, cnt; vector<int> vec; bool isFirst[2002], inside[2002]; bool dontSee[2002]; int min_cardinality(int N){ n = N; /// 종류 알아내기 for(int i=0; i<n; i++){ move_inside(i); if(press_button() == 2) move_outside(i); else vec.push_back(i), isFirst[i] = 1, inside[i] = 1; } k = cnt = (int)vec.size(); for(int i=0; i<n; i++) if(inside[i]) dontSee[i] = 1; int l = 2, r = N/k, ans = 1; while(l<=r){ int m = (l+r + min((r-l)/10, 2) + min((r-l)/500, 1))/2; vector<int> setIn, setOut; for(int i=0; i<n; i++){ if(dontSee[i]) continue; move_inside(i); if(press_button() <= m) setIn.push_back(i); else move_outside(i), setOut.push_back(i); } cnt += (int)setIn.size(); if(cnt == k * m){ ans = m, l = m+1; for(int x: setIn) dontSee[x] = 1; } else{ r = m-1, cnt -= (int)setIn.size(); for(int x: setIn) move_outside(x); for(int x: setOut) dontSee[x] = 1; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...