萌新求调,编译过不了了
  • 板块学术版
  • 楼主dk_qwq
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/11/23 17:19
  • 上次更新2023/10/27 01:49:10
查看原帖
萌新求调,编译过不了了
311306
dk_qwq楼主2022/11/23 17:19

RT,

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
namespace INPUT{
	char buf[1<<20],*p1,*p2;
	#define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<20,stdin),p1==p2)?EOF:*p1++)
}
using namespace INPUT;
template<typename T>
inline T read(){
	T x=0,p=1;
	char ch=gc();
	while(ch<'0'||ch>'9'){
		if(ch=='-') p=-1;
		ch=gc();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<3)+(x<<1)+(ch^48);
		ch=gc();
	}
	return x*p;
}
const int N=5e4+5;
class SparseTable{
	int f[N][30];
	int Log2[N];
 public:
 	Sparse(int _n,int *A){
 		Log2[1]=0;
 		for(int i=2;i<=_n;i++) Log2[i]=Log2[i/2]+1;
 		for(int i=1;i<=_n;i++) f[i][0]=A[i];
 		int Logn=Log2[_n]+1;
 		for(int j=1;j<=Logn;j++) for(int i=1;i+(1<<j)-1<=_n;i++)
 			f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);
 		return ;
	}
	inline int query(int l,int r){
		int s=Log2[r-l+1];
		return max(f[l][s],f[r-(1<<s)+1][s]);
	}
};
void test(int _n,int *A){
	return ;
}
int n,Q;
int A[N];
int main(){
	freopen("data.in","r",stdin);
	n=read<int>(),Q=read<int>();
	for(int i=1;i<=n;i++) A[i]=read<int>();
	SparseTable st(n,A);
	while(Q--){
		int l=read<int>(),r=read<int>();
		printf("%d\n",st.query(l,r));
	}
}
2022/11/23 17:19
加载中...