比赛 26暑假集训模拟赛2 评测结果 AAAAAATTTTT
题目名称 It s Mooin Time III 最终得分 54
用户昵称 ChenBp 运行时间 5.470 s
代码语言 C++ 内存使用 3.92 MiB
提交时间 2026-07-02 12:24:10
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
vector<int>ve[27];
long long solve(int j,int l,int r,int i,int k){
    if(j>r||j<l) return -1;
    if(j==k) return -1;
    if(!(i<j&&j<k)) return -1;
    return (long long)(j-i)*(k-j);
}
int main(){
    freopen("Time.in","r",stdin);
    freopen("Time.out","w",stdout);
    int n,q;
    cin>>n>>q;
    string s;
    cin>>s;
    s=" "+s;
    for(int i=1;i<=n;i++){
        ve[s[i]-'a'].push_back(i);
    }
    while(q--){
        int l,r;
        cin>>l>>r;
        long long ans=-1;
        for(int c1=0;c1<26;c1++){
            auto i=lower_bound(ve[c1].begin(),ve[c1].end(),l);
            if(i==ve[c1].end()) continue;
            int pi=*i;
            if(pi>r-2) continue;
            for(int c2=0;c2<26;c2++){
                if(c1==c2||ve[c2].size()<2) continue;
                auto k=upper_bound(ve[c2].begin(),ve[c2].end(),r);
                if(k==ve[c2].begin()) continue;
                k--;
                int pk=*k;
                if(pk<=pi+1) continue;
                
                int mid=(pi+pk)/2;
                auto j1=lower_bound(ve[c2].begin(),ve[c2].end(),mid);
                auto j2=upper_bound(ve[c2].begin(),ve[c2].end(),mid);
                if(j1!=ve[c2].end()) ans=max(ans,solve(*j1,l,r,pi,pk));
                if(j2!=ve[c2].begin()){
                    j2--;
                    ans=max(ans,solve(*j2,l,r,pi,pk));
                }
            }
        }
        cout<<ans<<endl;
//        int ans=-1;
//        for(int j=l;j<=r;j++){
//            for(int k=j+1;k<=r;k++){
//                if(s[j]!=s[k]) continue;
//                for(int i=l;i<=j-1;i++){
//                    if(s[i]!=s[j]) ans=max(ans,(j-i)*(k-j));
//                }
//            }
//        }
//        cout<<ans<<endl;
    }
    return 0;
}