bdfz_2024_summer/day5/perfect/fix.cpp
2024-08-08 14:12:15 +08:00

28 lines
543 B
C++

#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 3e5+5;
const int MAX_K = 19;
int sMin[MAX_N][MAX_K];
int sMax[MAX_N][MAX_K];
int l[MAX_N];
int main(){
cin.sync_with_stdio(false);
cin.tie(0);
l[1]=0;
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>sMin[i][0];
sMax[i][0]=sMin[i][0];
if(i!=1)l[i]=l[(i>>1)]+1;
}
int k=l[n]+1;
for(int j=1;j<=k;j++){
for(int i=1;i+(1<<j)-1<=n;i++){
sMax[i][j]=max(sMax[i][j-1],sMax[i+(1<<(j-1))][j-1]);
}
}
}