Comments

Brute-force Code:

#include<bits/stdc++.h>
using namespace std;
#define pc putchar
#define rep(i,st,fi) for(int i=st;i<=fi;i++)
#define per(i,fi,st) for(int i=fi;i>=st;i--)
const int N=2e5+7;
int read(){
    int x=0,f=1;char ch=getchar();
    while(ch<'0'||'9'<ch){if(ch=='-') f=-1;ch=getchar();}
    while('0'<=ch&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x*f;
}
void print(int x){
    if(x<0){x=-x;putchar('-');}
    if(x>9) print(x/10);
    pc('0'+x%10);
}
void write(int x){print(x);pc('\n');}
int n,q,sum[N],sum1[N],sum2[N],pos[N],tot;
char s[N];
int Get(int x, int l, int r){return min(sum1[pos[x]]-sum1[l-1],sum2[r]-sum2[pos[x]]);}
int main(){
    n=read();q=read();
    scanf("%s",s+1);
    rep(i,1,n){
        sum1[i]=sum1[i-1];sum2[i]=sum2[i-1];sum[i]=sum[i-1];
        if(s[i]=='1') sum1[i]++;
        else if(s[i]=='2') sum2[i]++;
        else if(s[i]=='/') pos[++tot]=i,sum[i]++;
    }
    while(q--){
        int l=read(),r=read(),ans=0;
        if(sum[r]-sum[l-1]==0){write(0);continue;}
        int L=lower_bound(pos+1,pos+1+tot,l)-pos,R=upper_bound(pos+1,pos+1+tot,r)-pos-1;
        rep(i,L,R) ans=max(ans,Get(i,l,r));
        write(ans*2+1);
    }
    return 0;
}

It's obvious that a designed dataset like 1/2/1/2/1/2/...... can make this solution TLE.

The dataset of E too weak that brute force can accept it.

It's suggested to change the dataset.