这是我的CODE:
#include<bits/stdc++.h>
using namespace std;
int n,m,st[30][1000000];
int find(int l,int r){
int p=(r-l+1);
int k=log2(p);
return min(st[k][l],st[k][r-(1<<k)+1]);
}
int main(){
cin>>n>>m;
for(int i=0;i<30;i++){
for(int j=0;j<=n;j++)st[i][j]=INT_MAX;
}
for(int i=1;i<=n;i++){
cin>>st[0][i];
}
int cnt=1;
for(int i=1;i<=log2(n);i++){
cnt*=2;
for(int j=1;j<=n-cnt+1;j++){
for(int k=0;k<=i;k++){
st[i][j]=min(st[i][j],st[i-1][j+k]);
}
}
}
for(int i=1;i<=n-m+1;i++){
cout<<find(i,i+m-1)<<'\n';
}
return 0;
}
附上这个:
