求助大佬!为什么第九个点MLE
查看原帖
求助大佬!为什么第九个点MLE
368027
长烟一空2222楼主2020/11/24 18:26
#include<bits/stdc++.h>
using namespace std;
#define FOR(i,j,k)	for(int i=(j);i<=(k);i++)
#define ROF(i,j,k) 	for(int i=(j);i>=(k);i--)
#define id(j) 	isdigit(j)
#define rd(n)	n=read();
#define il inline
int read(){
	int x=0,f=1;char ch=getchar();
	while(!id(ch)){if(ch=='-')f=0;ch=getchar();}
	while(id(ch))	x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	return f? x:~(x-1);
}
int m,n,op[150010],tr[150010];
il int ls(int p){
	return p<<1;
}
il int rs(int p){
	return p<<1|1;
}
void push_up(int p){
	tr[p]=min(tr[ls(p)],tr[rs(p)]);
}
void build(int p,int l,int r){
	if(l==r){
		tr[p]=op[l];
		return ;
	}
	int mid=(l+r)>>1;
	build(ls(p),l,mid);
	build(rs(p),mid+1,r);
	push_up(p);
}
int query(int p,int x,int y,int l,int r){
	int tol=1001001;
	if(x<=l&&r<=y){
		return tr[p];
	}
	int mid=(l+r)>>1;
	if(x<=mid)	tol=min(tol,query(ls(p),x,y,l,mid));
	if(y>mid)	tol=min(tol,query(rs(p),x,y,mid+1,r));
	return tol;
}
int main(){
	rd(m)
	rd(n)
	FOR(i,1,m){
		rd(op[i]);
	}
	build(1,1,n);
	FOR(i,1,n){
		int a,b;
		rd(a)
		rd(b)
		cout<<query(1,a,b,1,n)<<' ';
	}
	return 0;
}
2020/11/24 18:26
加载中...