比赛 26暑假集训模拟赛2 评测结果 AWWWWWWWWWW
题目名称 It s Mooin Time III 最终得分 9
用户昵称 2_16鸡扒拌面 运行时间 0.801 s
代码语言 C++ 内存使用 4.36 MiB
提交时间 2026-07-02 09:49:05
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int MAXN=100010;

int n,q;
ll ans=-1;
char s[MAXN];
int pre[MAXN],pos[30][MAXN],cnt[30],lst[30]={0};

void init()
{
    for(int i=1;i<=n;++i)
    {
        int c=s[i]-'a';
        pos[c][++cnt[c]]=i;
        pre[i]=lst[c];
        lst[c]=i;
    }
}

int main()
{
    freopen("Time.in","r",stdin);
    freopen("Time.out","w",stdout);
    cin>>n>>q;
    for(int i=1;i<=n;++i) cin>>s[i];
    init();
    while(q--)
    {
        ans=-1;
        int l,r;
        cin>>l>>r;
        for(int c=0;c<26;++c)
        {
            if(cnt[c]<2) continue;
            int p2=upper_bound(pos[c]+1,pos[c]+1+cnt[c],r)-pos[c]-1,p1=p2-1;
            if(p2<1||p1<1) continue;
            int k=pos[c][p2],j=pos[c][p1];
            if(j<l) continue;
            int i=l;
            if(s[i]-'a'==c) i++;
            if(i>=j) continue;
            ans=max(ans,1LL*(j-i)*(k-j));
        }
        cout<<ans<<endl;
    }
    return 0;
}