# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
830894 | tolbi | Rarest Insects (IOI22_insects) | C++17 | 5 ms | 312 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
mt19937 ayahya(chrono::high_resolution_clock().now().time_since_epoch().count());
#include "insects.h"
int min_cardinality(int n) {
function<int(int)> f;
map<int,int> cev;
set<int> olan;
for (int i = 0; i < n; ++i)
{
olan.insert(i);
}
vector<int> kullandim;
vector<int> kullanmadim;
f = [&](int x)->int{
if (cev.count(x)) return cev[x];
int ans = 0;
vector<int> crr;
for (auto it : olan){
crr.push_back(it);
move_inside(it);
if (press_button()>x){
ans++;
crr.pop_back();
kullanmadim.push_back(it);
move_outside(it);
}
else kullandim.push_back(it);
}
for (int i = 0; i < crr.size(); ++i)
{
move_outside(crr[i]);
}
return cev[x]=ans;
};
int diff = n-f(1);
if (diff==1) return n;
int l = 1, r = n/diff;
int hueh = 0;
while (l<r){
int mid = l+(r-l+1)/2;
int hayda = f(mid);
if (hayda+hueh>n-(mid*diff)){
r=mid-1;
for (auto &it : kullanmadim){
olan.erase(it);
}
}
else {
l = mid;
hueh+=hayda;
for (auto &it : kullandim){
olan.erase(it);
}
}
kullandim.clear();
kullanmadim.clear();
}
return l;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |