80分求助
查看原帖
80分求助
754311
zhangjiting楼主2023/3/8 18:39
#include <bits/stdc++.h>
using namespace std;
const int N=2000005;
int n,a[N],q,l,r;
int dp[N][21];
inline void initmin() {
	for(int i=1;i<=n;++i)	dp[i][0]=a[i];
	for(int j=1;(1<<j)<=n;++j)
		for(int i=1;i+(1<<j)<=n+1;++i)
			dp[i][j]=min(dp[i][j-1],dp[i+(1<<(j-1))][j-1]);
}
inline int RMQmin(int l,int r) {
	int cnt=log2(r-l+1);
	return min(dp[l][cnt],dp[r-(1<<cnt)+1][cnt]);
}
int main() {
	ios::sync_with_stdio(false);
	cin>>n>>q;
	for(int i=1;i<=n;++i)	cin>>a[i];
	initmin();
	cout<<0<<endl;
	for(int i=2;i<=n;i++){
		cout<<RMQmin(max(i-q,1),i-1)<<endl;
	}
	return 0;
}

2 和 10 MLE 记录

2023/3/8 18:39
加载中...