MLE了
#include<bits/stdc++.h>
using namespace std;
int n,m,a[3000003],r[3000003][25];
int _(int L,int R)
{
int x=(int)(log(R-L+1)/log(2));
return min(r[L][x],r[R-(1<<x)+1][x]);
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
r[i][0]=a[i];
}
for(int j=1;(1<<j)<=n;j++)
{
for(int i=1;i+(1<<j)-1<=n;i++)
{
r[i][j]=min(r[i][j-1],r[i+(1<<(j-1))][j-1]);
}
}
printf("0\n");
for(int i=2;i<=m+1;i++)
{
printf("%d\n",_(1,i-1));
}
for(int i=m+2;i<=n;i++)
{
printf("%d\n",_(i-m,i-1));
}
return 0;
}
(虽然可以直接把那两个点下载下来,但我还是想先搞懂)