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