#2#10爆空间求助
查看原帖
#2#10爆空间求助
616407
mzyczzx楼主2022/3/21 12:49
#include<bits/stdc++.h>
using namespace std;
int a[3000010];
int mmin[3000010][27];
int n,m,l,r;
int v;
void rmq(){
	for(int j=1;j<=20;++j){
		for(int i=1;i<=n;++i){
			if(i+(1<<j)-1<=n){
				mmin[i][j]=min(mmin[i][j-1],mmin[i+(1<<(j-1))][j-1]);
			}
		}
	}
}
int mmmin(int ll,int rr){
	int x=log(rr-ll+1)/log(2);
	return (min(mmin[ll][x],mmin[rr+1-(1<<x)][x]));
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		cin>>v;
		a[i]=v;
		mmin[i][0]=v;
	}
	rmq();
	for(int i=1;i<=n;++i){
		if(i==1 && i<=m ){cout<<"0"<<endl;}
		else if(i<=m)cout<<mmmin(1,i-1)<<endl;
		else cout<<mmmin(i-m,i-1)<<endl;
	}
	return 0;
} 
2022/3/21 12:49
加载中...