Submission #1034813

#TimeUsernameProblemLanguageResultExecution timeMemory
1034813Mr_HusanboyRarest Insects (IOI22_insects)C++17
25 / 100
228 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 dis = len(v); auto check = [&](int m)->int{ 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); return dis + len(rem); }; int cur = n / dis; while(cur > 1){ int cnt = check(cur); //cout << cur << ' ' << cnt << endl; if(cnt == cur * dis){ return cur; }else cur = cnt / dis; } return cur; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...