warmingcium @ 2023-01-23 17:31:02
#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[1000006];
int st[1006][1006];
int block[1003];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n,q;
cin>>n>>q;
int siz=sqrt(n);
int j=-1;
for(int i=0;i<n;i++){
cin>>a[i];
if(i%siz==0){
sort(st[j],st[j]+siz);
j++;
}
st[j][i%siz]=a[i];
}
// for(int i=0;i<10;i++){
// for(int k=0;k<10;k++) cout<<st[i][k]<<" ";
// cout<<endl;
// }
char op; int l,r,c;
while(q--){
cin>>op;
cin>>l>>r>>c;
l--; r--;
int lb=l/siz;
int rb=r/siz;
if(op=='M'){
if(lb==rb){
for(int i=l;i<=r;i++) a[i]+=c;
}else{
for(int i=l;i<(lb+1)*siz;i++) a[i]+=c;
for(int i=lb*siz;i<lb*siz+siz;i++) st[lb][i%siz]=a[i];
sort(st[lb],st[lb]+siz);
for(int i=lb+1;i<rb;i++) block[i]+=c;
for(int i=siz*rb;i<=r;i++) a[i]+=c;
for(int i=rb*siz;i<rb*siz+siz;i++) st[rb][i%siz]=a[i];
sort(st[rb],st[rb]+siz);
}
}
if(op=='A'){
int ans=0;
if(lb==rb) for(int i=l;i<=r;i++){
if(a[i]>=c) ans++;
}
if(lb!=rb){
for(int i=l;i<(lb+1)*siz;i++) if(a[i]>=c) ans++;
for(int i=siz*rb;i<=r;i++) if(a[i]>=c) ans++;
for(int i=lb+1;i<rb;i++) ans+=(siz-(lower_bound(st[i],st[i]+siz,c-block[i])-st[i]));
}
printf("%lld\n",ans);
}
}
return 0;
}