Submission #1180594

#TimeUsernameProblemLanguageResultExecution timeMemory
1180594definitelynotmeeRarest Insects (IOI22_insects)C++17
99.96 / 100
15 ms424 KiB
// codigo da clara #include "insects.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; #define all(x) x.begin(), x.end() #define sz(x) (int)x.size() #define mk make_pair #define pb push_back #define fr first #define sc second mt19937 rng; int rand(int l, int r){ return uniform_int_distribution<int>(l,r)(rng); } int min_cardinality(int N) { vector<bool> in(N), block(N), ss(N); vector<int> ord(N); int colors = 0, n = N; rng.seed(12398237); for(int i = 0; i < N; i++) { ord[i] = i; move_inside(i); in[i] = 1; if(press_button() == 2) move_outside(i), in[i] = 0; else colors++; if(in[i]) ss[i] = 1; } if(colors == 1) return N; int l = 1, r = N/colors; while(l <= r) { int mid = (l+r+1)/2, qtd = 0; if(r == 1) return 1; shuffle(all(ord), rng); int rem = n; for(int i : ord) { if(qtd + rem < colors*mid) break; if(qtd == colors*mid) break; if(in[i]) { qtd++; continue; } if(block[i]) continue; in[i] = 1; move_inside(i); rem--; if(press_button() > mid) move_outside(i), in[i] = 0; else qtd++; } if(qtd == colors*mid) { l = mid+1; for(int i = 0; i < N; i++) ss[i] = in[i]; } else { r = mid-1; for(int i = 0; i < N; i++) { if(ss[i]) continue; if(in[i]) move_outside(i), in[i] = 0; else n -= (block[i] == 0), block[i] = 1; } r = min(r, n/colors); } } return l-1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...