| 比赛 |
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;
}