#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <set>
using namespace std;
typedef long long ll;
const int INF=0x3f3f3f3f;
const int N=50010;
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
//N个节点数
int n,m;
int c1[N],c2[N]; //树状数组要超过x的范围
int lowbit(int x){
return x&(-x);
}
void update1(int x,int v){
while(x<=n){
c1[x]+=v;
x+=lowbit(x);
}
}
void update2(int x,int v){
while(x<=n){
c2[x]+=v;
x+=lowbit(x);
}
}
int sum1(int x){
int res=0;
while(x>0){
res+=c1[x];
x-=lowbit(x);
}
return res;
}
int sum2(int x){
int res=0;
while(x>0){
res+=c2[x];
x-=lowbit(x);
}
return res;
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int op,a,b;
cin>>op>>a>>b;
if(op==1){
update1(a,1);
update2(b,1);
}else{
cout<<sum1(b)-sum2(a-1)<<endl;
}
}
}
校门外的树
最新推荐文章于 2021-08-16 19:03:06 发布