加强效果不明显,树状数组能过且跑的飞快
查看原帖
加强效果不明显,树状数组能过且跑的飞快
34886
ezoixx130Chopin楼主2020/7/28 10:36

评测记录

#include <bits/stdc++.h>
using namespace std;

#define MAXN 100010
#define lowbit(x) guess

int n,m,a[MAXN],c[MAXN];

class IO{char buffer[30000001];char *h;int len;inline char gchar(){return *h++;}inline bool validdigit(char c){return c>='0' && c<='9';}public:inline void init(){len=fread(buffer,1,30000000,stdin);h=buffer;}inline int nextint(){int i=0;char c;do c=gchar();while(!validdigit(c));do{i=i*10+c-48;c=gchar();}while(validdigit(c));return i;}}io;

void init(){for(int i=1;i<=n;++i)for(int j=i-lowbit(i)+1;j<=i;++j)c[i]=max(c[i],a[j]);}

int query(){int l=io.nextint(),r=io.nextint(),res=0;while(r>=l){res=max(res,a[r--]);for(;r-lowbit(r)>=l;r-=lowbit(r))res=max(res,c[r]);}return res;}

int main()
{
    io.init();n=io.nextint();m=io.nextint();
	for(int i=1;i<=n;++i)a[i]=io.nextint();
	init();
	while(m--)printf("%d\n",query());
}
2020/7/28 10:36
加载中...