提交时间:2026-02-02 14:49:20

运行 ID: 39798

#include<bits/stdc++.h> using namespace std; #define pii pair<int,int> #define fr first #define sc second #define mk make_pair #define pb push_back int read(){int x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;} const int MAXN=1500010; int N; bool AAA; int n,m,ans,a[MAXN],nx[26][MAXN],p[MAXN][26]; pii q[MAXN]; pair<int,pii>as[MAXN]; char s[MAXN]; bool fl[MAXN]; int nf[MAXN]; void slv(){ scanf("%s",s+1); n=strlen(s+1); for(int i=1;i<=n;i++)a[i]=s[i]-'a',N=max(N,a[i]+1); m=read(); for(int i=1;i<=m;i++)q[i].fr=read(),fl[q[i].sc=read()]=1; nf[n+1]=n;for(int i=n;i>=1;i--)if(fl[i])nf[i]=i;else nf[i]=nf[i+1]; for(int o=0;o<N;o++)nx[o][n+1]=n+1; for(int i=n;i>=0;i--){ for(int o=0;o<N;o++)nx[o][i]=nx[o][i+1]; nx[a[i]][i]=i; } for(int x=0;x<N;x++){ for(int i=nx[x][0];i<=n;i=nx[x][i+1]){ for(int o=0;o<N;o++)if(a[i]==x&&nx[o][i+1]<nx[x][i+1])p[min(nf[nx[o][i]],nx[x][nx[o][i]]-1)][o]++; } int lst=0; for(int i=1;i<=n;i++)if(a[i+1]==x||fl[i]||i==n){ for(int o=0;o<N;o++)p[i][o]+=p[lst][o]; lst=i; } for(int i=1;i<=m;i++){ int l=q[i].fr,r=q[i].sc; for(int o=0;o<N;o++)if(o!=x){ int tmp=nx[x][l]; if(nx[x][l]<=r)as[i]=max(as[i],mk((p[r][o]-p[nx[x][l]-1][o])*2,mk(-x,-o))); if(nx[o][l]<=r)as[i]=max(as[i],mk((p[r][o]-p[nx[x][nx[o][l]]-1][o])*2+1,mk(-o,-x))); } } for(int i=1;i<=n;i++)if(a[i+1]==x||fl[i]||i==n)for(int o=0;o<N;o++)p[i][o]=0; } for(int i=1;i<=m;i++)printf("%d %c%c\n",as[i].fr,-as[i].sc.fr+'a',-as[i].sc.sc+'a'); } bool BBB; signed main(){ // freopen("seq.in","r",stdin);freopen("seq.out","w",stdout); slv(); //cerr<<clock()*1.0/CLOCKS_PER_SEC<<"s\n"<<((&AAA)-(&BBB))/1024.0/1024<<"MB\n"; return 0; }