Submission #1180547

#TimeUsernameProblemLanguageResultExecution timeMemory
1180547mariaclaraRarest Insects (IOI22_insects)C++17
69.51 / 100
35 ms432 KiB
#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 int rand(int a, int b) { return rand()%(b-a+1) + a; } int min_cardinality(int N) { vector<int> in(N), block(N); int colors = 0, n = N; srand(654319); for(int i = 0; i < N; i++) { move_inside(i); in[i] = 1; if(press_button() == 2) move_outside(i), in[i] = 0; else colors++; } if(colors == 1) return N; int l = 1, r = N/colors; while(l <= r) { int mid = rand(l, r - (r-l+1)/4), qtd = 0; if(r == 1) return 1; for(int i = 0; i < N; i++) { if(in[i]) { qtd++; continue; } if(block[i]) continue; in[i] = 1; move_inside(i); if(press_button() > mid) move_outside(i), in[i] = 0; else qtd++; } if(qtd == colors*mid) l = mid+1; else { r = mid-1; for(int i = 0; i < N; i++) { 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...