提交时间:2026-02-02 16:24:47

运行 ID: 39817

#include<bits/stdc++.h> // #define int long long #define PIB pair<int,bool> using namespace std; const int N=1.5e6+7; int n,q; char c[N]; vector<int> o[26][26]; vector<int> Sum[26][26]; signed main(){ #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++){ // cout<<(char)(i+'a')<<" "<<(char)(j+'a')<<endl; // for(auto x:o[i][j])cout<<x<<" "; // cout<<endl; // } // } 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; while(q--){ int l,r; cin>>l>>r; int Ans=0,x1=0,x2=0; for(int i=0;i<26;i++)for(int j=i+1;j<26;j++){ if(!(o[i][j].size()))continue; auto IL=lower_bound(o[i][j].begin(),o[i][j].end(),l); auto IR=lower_bound(o[i][j].begin(),o[i][j].end(),r+1);IR--; int pl=IL-o[i][j].begin(),pr=IR-o[i][j].begin(); 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){Ans=rAns,x1=c[o[i][j][pl]]-'a',x2=i+j-x1;} else if(rAns==Ans){ int r1=c[o[i][j][pl]]-'a',r2=i+j-r1; if((r1<x1)||(r1==x1&&r2<x2))x1=r1,x2=r2; } }cout<<Ans<<" "<<(char)(x1+'a')<<(char)(x2+'a')<<endl; }return 0; }