记录编号 225514 评测结果 AAAAAAAAAA
题目名称 忠诚 最终得分 100
用户昵称 Gravatarliu_runda 是否通过 通过
代码语言 C++ 运行时间 0.452 s
提交时间 2016-02-17 14:07:38 内存使用 1.82 MiB
显示代码纯文本
#include<cstdio>
#define lch(x) x<<1
#define rch(x) x<<1|1
#define min(a,b) a<b?a:b
int minv[400050];
void build(int rt,int a,int b){
	if(a==b)scanf("%d",minv+rt);
	else{
		build(lch(rt),a,(a+b)>>1);
		build(rch(rt),((a+b)>>1)+1,b);
		minv[rt]=min(minv[lch(rt)],minv[rch(rt)]);
	}
}
int query(int rt,const int &a,const int &b,int l,int r){
	if(a<=l&&r<=b)return minv[rt];
	else{
		if(b<=(l+r)>>1)return query(lch(rt),a,b,l,(l+r)>>1);
		else if(a>=((l+r)>>1)+1)return query(rch(rt),a,b,((l+r)>>1)+1,r);
		else return min(query(lch(rt),a,b,l,(l+r)>>1),query(rch(rt),a,b,((l+r)>>1)+1,r));
	}
}
int main(){
	freopen("faithful.in","r",stdin);
	freopen("faithful.out","w",stdout);
	int n,m;
	scanf("%d %d",&m,&n);
	build(1,1,m);
	int x,y;
	for(int i = 0;i<n;++i){
		scanf("%d %d",&x,&y);
		printf("%d ",query(1,x,y,1,m));
	}
	fclose(stdin);fclose(stdout);
	return 0;
}