模拟。
#include<bits/stdc++.h> #define int long long #define double long double #define x first #define y second using namespace std; typedef long long LL; typedef long long ll; typedef pair<int,int> PII; const int N=3e5+10; const int M=1e3+10; int mod=1e9+7; int a[N]; void solve(){ int n,q;cin>>n>>q; string s;cin>>s; s=' '+s; vector<int>nx(n+10); for(int i=1;i<=n;i++) nx[i]=1; while(q--){ int l,r;cin>>l>>r; int pos=1; for(int i=1;i<=n;i++){ if(pos>=l){ if(pos+nx[i]-1<=r){ pos+=nx[i]; nx[i]*=2; }else{ int len=r-pos+1; pos+=nx[i]; nx[i]+=len; break; } }else{ if(pos+nx[i]-1>=r){ nx[i]+=r-l+1; break; }else if(pos+nx[i]-1>=l){ int len=pos+nx[i]-1-l+1; pos+=nx[i]; nx[i]+=len; } else pos+=nx[i]; } } // break; } for(int i=1;i<=n;i++){ for(int j=1;j<=nx[i];j++) cout<<s[i]; } } signed main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); int _; _=1; //cin>>_; while(_--){ solve(); } }