模拟。
#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();
}
}

京公网安备 11010502036488号