【有关注为回报qwq】求卡常+调
查看原帖
【有关注为回报qwq】求卡常+调
253765
houpingze楼主2020/12/27 15:10
#include<bits/stdc++.h>
#define reg register int
#define INF (1<<30) 

using namespace std;
inline int read(){
	reg res=0,fs=1; char c=getchar();
	while(!(c>='0' && c<='9')){ if(c=='-')fs=-1; c=getchar(); }
	while(c>='0' && c<='9')res=res*10+c-48,c=getchar();
	return res*fs;
}
void print(int x){
    if(x<0) { putchar('-'); x=-x;}
    if(x>9) print(x/10);
    putchar(x%10+'0');
}
int n,cnt,m,a[100010],ans,tmp,l,r;
int v[500],S;
inline int mx(int x,int y){
    if(x>y)  return x;
    return y;
}
inline int cx(int l,int r){
    //l~~r
    int ll=l/S+1,rr=r/S-1;
   // cout<<ll<<' '<<rr<<endl;
	int ret=-INF;
	for(reg i=ll;i<=rr;++i) ret=mx(ret,v[i]);
	for(reg i=l;i<=ll*S;++i) ret=mx(ret,a[i]);
	for(reg i=rr*S;i<=r;++i) ret=mx(ret,a[i]);
	return ret; 
}
int main() { 
	cin>>n>>m;
	S=sqrt(n);
	for(reg i=1;i<=n;++i){
		a[i]=read();
		int k=i/S;
		v[k]=mx(v[k],a[i]);
	} 
// 	for(reg i=1;i<=n;++i){
// 	}
	while(m--){
		l=read(),r=read(); 
	    print(cx(l,r));
	    putchar('\n');
	} 
}

或者有什么更好的快速读写也可以,谢谢qwq

2020/12/27 15:10
加载中...