Submission #1188249

#TimeUsernameProblemLanguageResultExecution timeMemory
1188249ByeWorldRarest Insects (IOI22_insects)C++20
58.38 / 100
46 ms468 KiB
#include "insects.h" #include <bits/stdc++.h> #define ll long long #define pb push_back #define fi first #define se second #define lf ((id<<1)) #define rg ((id<<1)|1) #define md ((l+r)>>1) using namespace std; const int MAXN = 3e5+10; const ll MOD = 1e9+2022; ll sum(ll a, ll b){ return (a+b)%MOD;} void chsum(ll &a, ll b){ a = (a+b)%MOD;} ll mul(ll a, ll b){ return (a*b)%MOD; } void chmul(ll &a, ll b){ a = (a*b)%MOD;} void chmn(auto &a, auto b){ a = min(a, b); } void chmx(auto &a, auto b){ a = max(a, b); } int n, ANS; int ty[MAXN]; vector <int> all, dif; // yg gk di dalem vec vector<int>vec; bool le = 0; bool cek(int x){ if(le == 0){ for(int i=0; i<all.size(); i++){ // kalo ke kanan ambil ygdi luar int v = all[i]; move_inside(v); if(press_button() == x+1){ move_outside(v); } else vec.pb(v); // vec < all } all.clear(); for(int i=0; i<n; i++) ty[i] = 0; for(auto in : vec) ty[in] = 1; for(int i=0; i<n; i++){ if(ty[i]) continue; all.pb(i); } } else { for(auto in : vec) move_outside(in); vector<int> vec2; for(int i=0; i<vec.size(); i++){ // kalo ke kanan ambil ygdi luar int v = vec[i]; move_inside(v); if(press_button() == x+1){ move_outside(v); } else vec2.pb(v); // vec < all } swap(vec2, vec); // vec < vec2 for(int i=0; i<n; i++) ty[i] = 0; for(auto in : vec2) ty[in] = 1; for(auto in : vec) ty[in] = 2; all.clear(); for(int i=0; i<n; i++){ if(ty[i]==1) // vec2 yg ga ada di vec all.pb(i); } } if(dif.size() * x == vec.size()) return 1; // waduh tot * x return 0; } int min_cardinality(int N) { n = N; ANS = n; for(int i=0; i<n; i++){ move_inside(i); if(press_button() == 1){ dif.pb(i); } else move_outside(i); } for(auto in : dif) move_outside(in); for(int i=0; i<n; i++) all.pb(i); int l=2, r=n, mid=0, cnt=1; while(r-l>=4){ mid = (l+l+r)/3; if(cek(mid)){ le = 0; cnt = mid, l = mid+1; } else { le = 1; r = mid-1; } // cout << l << ' ' << r << ' ' << cnt << "cnt\n"; } for(int i=l; i<=r; i++){ if(cek(i)){ le = 0; cnt = i; } else break; } return cnt; // for(int i=0; i<n; i++) vec.pb(i); // while(!vec.empty()){ // for(auto in : vec) move_inside(in); // int mx = press_button(); // chmn(ANS, mx); // for(auto in : vec) move_outside(in); // for(int i=0; i<n; i++) ty[i] = 0; // vector<int> idx; // for(auto in : vec){ // if(ty[in]) continue; // move_outside(in); // } // for(auto in : idx) move_inside(in); // penting aj // for(auto in : vec){ // if(ty[in]) continue; // move_inside(in); // if(press_button() == 2) ty[in] = 1; // max // move_outside(in); // } // vector<int> vec2; // for(auto in : vec){ // if(ty[in]) continue; // vec2.pb(in); // } // swap(vec, vec2); // } // return ANS; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...