板子题~
ACcode:
#include<bits/stdc++.h>
using namespace std;
const int N = 2e6+10;
typedef long long ll;
#define int long long
struct node{int l,r;int minv;
}tr[N*4];
int n,m,w[N];
void pushup(int u){tr[u].minv=min(tr[u<<1].minv,tr[u<<1|1].minv);
}
void build(int u,int l,int r){if(l==r)tr[u]={l,r,w[l]};else{tr[u]={l,r};int mid=l+r>>1;build(u<<1,l,mid),build(u<<1|1,mid+1,r);pushup(u);}
}
int query(int u,int l,int r){if(tr[u].l>=l&&tr[u].r<=r)return tr[u].minv;int mid=tr[u].l+tr[u].r>>1;ll minv=1<<30;if(l<=mid)minv=query(u<<1,l,r);if(r>mid)minv=min(minv,query(u<<1|1,l,r));pushup(u);return minv;
}
signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)cin>>w[i];build(1,1,n);cout<<0<<'\n';for(int i=2;i<=n;i++){int a=i-m;if(a<1)a=1;cout << query(1,a,i-1)<<"\n";}return 0;
}
over~