就很好奇为什么会R掉7个点剩下的还是Wa
查看原帖
就很好奇为什么会R掉7个点剩下的还是Wa
1127560
SR_G_B_ysqd1602楼主2024/10/3 17:49
#include<bits/stdc++.h>
using namespace std;
//#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
int s[2000001],t[2000001][26],u[2000001][28];
int n,q,askl,askr,ans,maxx;
//inline int rmq1(int l,int r){
//	int k=0;
//	while(l+(1<<k+1)-1<=r)k++;
//	return max(t[l][k],t[r-(1<<k)+1][k]);
//}
inline int rmq2(int l,int r){
	int k=0;
	while(l+(1<<k+1)-1<=r)k++;
	return min(u[l][k],u[r-(1<<k)+1][k]);
}
int main(){
	cin>>n>>q;
	for(int i=1;i<=n;i++){  
		scanf("%d",&s[i]);
//		t[i][0]=s[i];
		u[i][0]=s[i];
	}
	int maxx=log2(n);
//	for(int j=1;j<=maxx;j++){
//		for(int i=1;i+(1<<j)-1<=n;i++){
//			t[i][j]=max(t[i][j-1],t[i+(1<<j-1)][j-1]);
//		}	
//	}
	for(int j=1;j<=maxx;j++){
		for(int i=1;i+(1<<j)-1<=n;i++){
			u[i][j]=min(u[i][j-1],u[i+(1<<j-1)][j-1]);
		}	
	}
	for(int i=1;i<=n;i++){
		printf("%d\n",rmq2(i-q+1,i));
	}
	return 0;
}
2024/10/3 17:49
加载中...