提交时间:2026-02-02 17:00:05
运行 ID: 39820
#include<bits/stdc++.h> // #define int long long #define PIB pair<int,bool> #define endl '\n' using namespace std; const int N=1.5e6+7,M=1e5+7; int n,q; char c[N]; vector<int> o[26][26]; vector<int> Sum[26][26]; int l[M],r[M]; int Ans[M],x1[M],x2[M]; int rk[N]; signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #ifndef ONLINE_JUDGE freopen("seq.in","r",stdin); freopen("seq.out","w",stdout); #endif cin>>c+1; n=strlen(c+1); for(int i=1;i<=n;i++){ for(int j=0;j<26;j++){ if(c[i]-'a'==j)continue; if(j<c[i]-'a')o[j][c[i]-'a'].push_back(i); if(j>c[i]-'a')o[c[i]-'a'][j].push_back(i); } } for(int i=0;i<26;i++){ for(int j=i+1;j<26;j++){ if(!o[i][j].size())continue; Sum[i][j].resize(o[i][j].size()); Sum[i][j][0]=1; for(int k=1;k<o[i][j].size();k++){ Sum[i][j][k]=Sum[i][j][k-1]+(c[o[i][j][k]]!=c[o[i][j][k-1]]); } } } cin>>q; for(int i=1;i<=q;i++)cin>>l[i]>>r[i]; for(int i=0;i<26;i++)for(int j=i+1;j<26;j++){ if(!o[i][j].size())continue; int p=0; for(int r=1;r<=n+1;r++){ while(p<o[i][j].size()&&o[i][j][p]<r)p++; rk[r]=p; } for(int t=1;t<=q;t++){ int pl=rk[l[t]],pr=rk[r[t]+1]-1; if(pl>pr)continue; // cout<<(char)(i+'a')<<(char)(j+'a')<<" "<<pl<<" "<<pr<<" "; int rAns=Sum[i][j][pr]-(pl?Sum[i][j][pl-1]:0); if((pl>=1)&&(c[o[i][j][pl]]==c[o[i][j][pl-1]]))rAns++; // cout<<rAns<<endl; if(rAns>Ans[t]){Ans[t]=rAns,x1[t]=c[o[i][j][pl]]-'a',x2[t]=i+j-x1[t];} else if(rAns==Ans[t]){ int r1=c[o[i][j][pl]]-'a',r2=i+j-r1; if((r1<x1[t])||(r1==x1[t]&&r2<x2[t]))x1[t]=r1,x2[t]=r2; } } } for(int i=1;i<=q;i++)cout<<Ans[i]<<" "<<(char)(x1[i]+'a')<<(char)(x2[i]+'a')<<endl; cout.flush();return 0; }