比赛 26暑假集训模拟赛2 评测结果 AAAAAAAAAAA
题目名称 It s Mooin Time III 最终得分 100
用户昵称 运行时间 0.784 s
代码语言 C++ 内存使用 4.11 MiB
提交时间 2026-07-02 09:06:34
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define INT_MAX (int)(1e18)

const int N=1e5+10;

int n,q;

vector<int> g[30];

inline int read(){
    int t=0,f=1;
    register char c=getchar();
    while(c<'0'||c>'9') f=(c=='-')?(-1):(f),c=getchar();
    while(c>='0'&&c<='9') t=(t<<3)+(t<<1)+(c^48),c=getchar();
    return t*f;
}

char c[N];

signed main(){
    freopen("Time.in","r",stdin);
    freopen("Time.out","w",stdout);
    n=read(),q=read();
    for(int i=0;i<26;i++) g[i].push_back(0);
    c[1]=getchar();
    while(c[1]<'a'||c[1]>'z') c[1]=getchar();
    g[c[1]-'a'].push_back(1);
    for(int i=2;i<=n;i++) c[i]=getchar(),g[c[i]-'a'].push_back(i);
    while(q--){
        int l=read(),r=read();
        int ll=INT_MAX,ans=-1;
        for(int i=0;i<26;i++){
            if(i==c[l]-'a') continue;
            auto it=lower_bound(g[i].begin(),g[i].end(),l);
            if(it==g[i].end()) continue;
            ll=min(ll,*it);
        }
//        if(l==4842) cerr<<c[l]<<" "<<ll<<" "<<c[ll]<<" "<<c[ll-1]<<"\n";
        for(int i=0;i<26;i++){
            int L=l,R=*(--upper_bound(g[i].begin(),g[i].end(),r));
            if(i==c[l]-'a') L=ll;
            if(R<=L+1) continue;
            int mid=L+R>>1;
            int x1=*lower_bound(g[i].begin(),g[i].end(),mid);
            int x2=*(--upper_bound(g[i].begin(),g[i].end(),mid));
            if(x1==R&&x2<=L) continue;
            else if(x1==R) ans=max(ans,(x2-L)*(R-x2));
            else if(x2<=L) ans=max(ans,(x1-L)*(R-x1));
            else ans=max(ans,max((x2-L)*(R-x2),(x1-L)*(R-x1)));
//            if(ans==1877293341) cerr<<"L:"<<L<<" x1:"<<x1<<" "<<"x2:"<<x2<<" R:"<<R<<" c:"<<c[L]<<c[x1]<<c[x2]<<c[R]<<"\n"; 
        }
        cout<<ans<<"\n";
    }
    return 0;
}