关于RE
查看原帖
关于RE
128754
方123456楼主2020/5/20 20:17

RT,我的代码为什么会 RE 呀?

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int INF=100005;
int n,m,lg[40],f[INF][40];
inline int read()
{
        int x=0,f=1; char ch=getchar();
        while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
        while (isdigit(ch)) {x=x*10+ch-48; ch=getchar();}
        return x*f;
}//快读。
inline int query_ask(int l,int r) {
        int k=lg[r-l+1];
        return max(f[l][k],f[r-(1<<k)+1][k]);
}//查询。
int main() {
        n=read();
        m=read();
        lg[0]=-1;
        for (int i=1; i<=n; i++) {
                scanf("%d",&f[i][0]);
                lg[i]=lg[i>>1]+1;
        }
        //读入并且处理 lg 数组,lg 数组的意义是 2^lg[i]<=i。
        for (int i=1; i<=21; i++)
                for (int j=1; j+(1<<i)-1<=n; j++)
                        f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
        while (m--) {
                int x=0,y=0;
                x=read();
                y=read();
                printf("%d\n",query_ask(x,y));
        }
        return 0;
}

2020/5/20 20:17
加载中...