# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1203101 | moha1111 | Finding Routers (IOI20_routers) | C++20 | 0 ms | 0 KiB |
#include "routers.h"
#include "bits/stdc++.h"
using namespace std;
unordered_map<int , int> askd;
int ask(int i)
{
if(askd.find(i) != askd.end())
return askd[i];
return askd[i] = use_detector(i);
}
int[] find_routers(int l, int n, int q)
{
vector<int> ans;
ans.push_back(0);
while(ans.size() < n)
{
int st = 0 , en = l , i;
while(st <= en)
{
int mid = (st + en) / 2;
if(ans.size() - 1 < ask(mid))
en = mid - 1;
else
st = mid + 1 , i = mid;
}
ans.push_back(2 * i - ans.back());
}
return ans;
}