제출 #1034800

#제출 시각아이디문제언어결과실행 시간메모리
1034800Mr_Husanboy드문 곤충 (IOI22_insects)C++17
50.03 / 100
126 ms940 KiB
#include "insects.h" #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define all(a) (a).begin(), (a).end() #define ll long long const int mod = 1000002022; vector<int> state, p; int n, m; vector<vector<int>> g; template<typename T> int len(T &a){return a.size();} mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count()); void shuffle(vector<int> &a, int n){ if(n == 1) return; random_shuffle(a.begin(), a.begin() + n); for(int i = 0; i < n; i ++){ int aa = rng() % n, bb = rng() % n; while(bb == aa) bb = rng() % n; swap(a[aa], a[bb]); } } int min_cardinality(int n) { vector<int> v; vector<int> done(n); for(int i = 0; i < n; i ++){ move_inside(i); if(press_button() == 2){ move_outside(i); }else v.push_back(i), done[i] = 1; } if(len(v) == 1){ return n; } int l = 1, r = n / len(v) + 1; auto check = [&](int m)->bool{ vector<int> rem; for(int i = 0; i < n; i ++){ if(done[i]) continue; move_inside(i); if(press_button() <= m){ rem.push_back(i); }else{ move_outside(i); } } for(auto u : rem) move_outside(u); //cout << m << ' ' << len(v) + len(rem) << endl; return len(v) + len(rem) < len(v) * m; }; while(r - l > 1){ int m = (l + r) / 2; if(check(m)){ r = m; }else l = m; } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...