# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1252573 | fahmid_rng | Finding Routers (IOI20_routers) | C++20 | 0 ms | 0 KiB |
#include<bits/stdc++.h>
#include "routers.h"
using namespace std;
std::vector<int> find_routers(int l, int n, int q) {
vector<int> p(n),left(n),right(n,l),query(1e6+1,-1);
p[0]=0;
for(int i=1;i<n;++i){
left[i]=i-1;
}
for(int i=1;i<n;++i){
int left[i]=max(p[i-1]+1,left[i]);
while(right[i]-left[i]>1){
int mid=(left[i]+right[i])/2;
if(query[mid]==-1){
query[mid]=use_detector(mid);
}
int q=query[mid];
//if(q==i-1){left[i]=mid;}
left[q+1]=mid;
//else{right=mid;}
for(int j=1;j<=q;++j){
right[j]=mid;
}
}
p[i]=2*left[i]-p[i-1];
}
return p;
}