初学类的继承,RE求助
查看原帖
初学类的继承,RE求助
289296
zymooll楼主2023/5/11 13:50

甚至不需要输入东西,他就RE了.

备注:这边的错误信号是 #11 也就是读到不该读的地方了.

代码附下:

// Author:zymooll

#include<bits/stdc++.h>
#define getchar getchar_unlocked
#define putchar putchar_unlocked
#define int long long
using namespace std;
int read(){
	int s=0,w=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')w=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		s=s*10+c-'0';
		c=getchar();
	}
	return s*w;
}
void print(int x){
	if(x<0){
		putchar('-');
		x=-x;
	}
	if(x>=10)print(x/10);
	putchar(x%10+'0');
	return;
}
const int MAXN=50000;
int n,q;
int l[MAXN];
int a[MAXN];
class ST_Base{
    public:
        int st[MAXN][18];
        int cmp(int aa,int bb){
            return -1;
        }
        void init(){
            for(int i=1;i<=n;i++){
                st[i][0]=a[i];
            }
            for(int j=1;j<=l[n];j++){
                for(int i=1;i<=n-(1<<j)+1;i++){
                    st[i][j]=cmp(st[i][j-1],st[i+(1<<(j-1))][j-1]);
                }
            }
        }
        int ask(int L,int R){
            return cmp(st[L][l[R-L+1]],st[R-(1<<(l[R-L+1]))+1][l[R-L+1]]);
        }
};
class ST_MAX:public ST_Base{
    public:
        int cmp(int aa,int bb){
            return max(aa,bb);
        }
};
class ST_MIN:public ST_Base{
    public:
        int cmp(int aa,int bb){
            return min(aa,bb);
        }
};
signed main(){
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	n=read(),q=read();
    l[1]=0;
    l[2]=1;
    for(int i=3;i<=n;i++){
        l[i]=l[i>>1]+1;
    }
    for(int i=1;i<=n;i++){
        a[i]=read();
    }
    ST_MAX smax;
    ST_MIN smin;
    smax.init();
    smin.init();
    for(int i=1;i<=q;i++){
        int L=read(),R=read();
        print(smax.ask(L,R)-smin.ask(L,R));
        putchar('\n');
    }
	return 0;
}

2023/5/11 13:50
加载中...