Submission #1232440

#TimeUsernameProblemLanguageResultExecution timeMemory
1232440clemmy14Rarest Insects (IOI22_insects)C++20
0 / 100
0 ms408 KiB
#include<bits/stdc++.h> #include "insects.h" using namespace std; int n, t, sofarl; bool up=true; set<int> dontUse; vector<int> machine; bool check(int k) { //cout << k << endl; if(up) { for(auto x : machine) dontUse.insert(x); } else { set<int> used; for(auto x : machine) used.insert(x); for(int i=0; i<n; i++) if(!used.count(i)) dontUse.insert(i); int mm=machine.size(); for(int i=sofarl*t; i<mm; i++) move_outside(i); for(int i=sofarl*t; i<mm; i++) machine.pop_back(); } for(int i=0; i<n; i++) if(!dontUse.count(i)) { machine.push_back(i); move_inside(i); if(press_button() > k) { machine.pop_back(); move_outside(i); } } // for(auto x : machine) cout << x << ' '; // cout << endl; // cout << (machine.size() == k*t ? "Yup" : "No") << endl; return machine.size() == k*t; } int lastTrue(int lo, int hi) { lo--; while(lo < hi) { sofarl=lo; int mid = lo+(hi-lo+1)/2; if(check(mid)){ lo=mid; up=true; } else { hi=mid-1; up=false; } } return lo; } int min_cardinality(int N) { n=N; for(int i=0; i<N; i++) { machine.push_back(i); move_inside(i); if(press_button() == 1) continue; machine.pop_back(); move_outside(i); } t=machine.size(); return lastTrue(1, (N/t)+1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...