# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
837087 | MODDI | Hedgehog Daniyar and Algorithms (IZhO19_sortbooks) | C++14 | 0 ms | 0 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.
struct table{
int n,logn;
vector<vector<pii>> arr;
vector<int> loglen;
void init(int n_){
n=1;
logn=1;
while(n<n_){
n*=2;
logn++;
}
loglen.resize(n+3);
n=n_;
int j=0;
for(int i=1;i<n+3;i++){
loglen[i]=j;
if(i+1>(1<<(j+1))) j++;
}
arr.resize(logn);
for(int i=0;i<logn;i++){
arr[i].assign(n+1,mp(INF,-1));
}
}
void set(vector<pii> &v){
for(int j=0;j<n+1;j++){
if(j<(int)v.size()) arr[0][j]=v[j];
}
}
void set(int j, pii x){
arr[0][j]=x;
}
void built(){
for(int i=1;i<logn;i++){
for(int j=0;j<n+1;j++){
pii vl=arr[i-1][j],vr;
if(j+(1<<(i-1))>=n+1) vr=mp(INF,-1);
else vr=arr[i-1][j+(1<<(i-1))];
arr[i][j]=min(vl,vr);
}
}
}
pii query(int l,int r){
if(l>=r) return mp(INF,-1);
pii vl=arr[loglen[r-l]][l],vr=arr[loglen[r-l]][r-(1<<loglen[r-l])];
return min(vl,vr);
}
};