#include<bits/stdc++.h>
using namespace std;
struct kuai{
long long zhi=0;
long long l=0;
long long r=0;
};
long long meikuai,a,b;
kuai block[1000005];
long long c[1000005],pai[1000005],lan[1000005]={0};
long long getkuai(long long x){
return (x-1)/meikuai+1;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
cin>>a>>b;
for(long long i=1;i<=a;i++){
cin>>c[i];
pai[i]=c[i];
}
meikuai=(long long)sqrt(a);
long long sum=0,cnt=1;
for(long long i=1;i<=a;i++){
sum+=c[i];
if(i%meikuai==0){
block[cnt].zhi=sum;
block[cnt].l=block[cnt-1].r+1;
block[cnt].r=i;
sum=0;
cnt++;
}
}
if(a%(long long)sqrt(a)!=0){
block[cnt].zhi=sum;
block[cnt].l=block[cnt-1].r+1;
block[cnt].r=a;
}
char ji;
long long quel,quer,lid,rid,d;
for(long long i=0;i<b;i++){
cin>>ji;
cin>>quel>>quer;
cin>>d;
lid=getkuai(quel);
rid=getkuai(quer);
if(ji=='M'){
if(lid==rid){
for(long long n=quel;n<=quer;n++){
c[n]+=d;
pai[n]=c[n];
block[lid].zhi+=d;
}
if(!is_sorted(pai+block[lid].l,pai+block[lid].r+1)) sort(pai+block[lid].l,pai+block[lid].r+1);
}
else{
for(long long n=quel;n<=block[lid].r;n++){
c[n]+=d;
block[lid].zhi+=d;
}
for(long long n=block[lid].l;n<=block[lid].r;n++){
pai[n]=c[n];
}
if(!is_sorted(pai+block[lid].l,pai+block[lid].r+1)) sort(pai+block[lid].l,pai+block[lid].r+1);
for(long long n=lid+1;n<rid;n++){
block[n].zhi+=meikuai*d;
lan[n]+=d;
}
for(long long n=block[rid].l;n<=quer;n++){
c[n]+=d;
}
for(long long n=block[rid].l;n<=block[rid].r;n++){
pai[n]=c[n];
}
if(!is_sorted(pai+block[rid].l,pai+block[rid].r+1)) sort(pai+block[rid].l,pai+block[rid].r+1);
}
}
else{
if(lid==rid){
sum=0;
for(long long n=quel;n<=quer;n++){
if(c[n]+lan[lid]>=d) sum++;
}
}
else{
sum=0;
for(long long n=quel;n<=block[lid].r;n++){
if(c[n]+lan[lid]>=d) sum++;
}
for(long long n=lid+1;n<rid;n++){
if(!is_sorted(pai+block[n].l,pai+block[n].r+1)) sort(pai+block[n].l,pai+block[n].r+1);
sum+=block[n].r-(lower_bound(pai+block[n].l,pai+block[n].r+1,d-lan[n])-pai-1);
}
for(long long n=block[rid].l;n<=quer;n++){
if(c[n]+lan[rid]>=d) sum++;
}
}
cout<<sum<<'\n';
}
}
return 0;
}
记录
https://www.luogu.com.cn/record/184318447