求教30分
查看原帖
求教30分
238203
跟你沟通楼主2020/11/1 17:19
#include<bits/stdc++.h>
using namespace std;
int n,m,f[1100000][30];
int mmin(int a,int b){return a<b?a:b;}
void init()
{
	cin>>n>>m;
	for(int i=1;i<=n;++i)scanf("%d",&f[i][0]);
	for(int j=1;j<=(int)log2(n);++j)
		for(int i=1;i<=n;++i)
			if(i+(1<<j)-1<=n)
				f[i][j]=mmin(f[i][j-1],f[i+(1<<(j-1))][j-1]);
}
void st()
{
	int k=(int)log2(m),x;
	for(int i=m;i<=n;++i)
	{
		x=n-m+1;
		cout<<mmin(f[x][k],f[i-(1<<k)+1][k])<<endl;
	}
}
int main()
{
	init();
	st();
}
2020/11/1 17:19
加载中...