自觉忽略注释
#include<bits/stdc++.h>
using namespace std;
int a[10000001],n,m,i,ans,x,y,z,pd;
struct student
{
int l,r,num;
}tree[40000001];
int lson(int x)
{
return x*2;
}
int rson(int x)
{
return x*2+1;
}
void build(int rt,int l,int r)
{
tree[rt].l=l;
tree[rt].r=r;
tree[rt].num=0;
if(l==r)
{
return;
}
int mid=(l+r)/2;
build(lson(rt),l,mid);
build(rson(rt),mid+1,r);
}
void update(int rt,int l,int r,int val)
{
if(l<=tree[rt].l&&tree[rt].r<=r)
{
tree[rt].num+=val;
return;
}
if(l<=tree[lson(rt)].r)
{
update(lson(rt),l,r,val);
}
if(tree[rson(rt)].l<=r)
{
update(rson(rt),l,r,val);
}
}
void query(int rt,int val)
{
ans+=tree[rt].num;
if(tree[rt].l==tree[rt].r)
{
return;
}
if(val<=tree[lson(rt)].r)
{
query(lson(rt),val);
}
if(tree[rson(rt)].l<=val)
{
query(rson(rt),val);
}
}
int main()
{
cin>>n>>m;
build(1,1,n);
for(i=1;i<=m;i++)
{
cin>>pd;
if(pd==0)
{
cin>>x>>y;
update(1,x,y,1);
}
if(pd==1)
{
ans=0;
cin>>x;
query(1,x);
cout<<ans+a[x]<<endl;
}
}
return 0;
}
/*
#include<bits/stdc++.h>
using namespace std;
int a[30000001],c[30000001];
int lowbit(int x)
{
return (x&(-x));
}
int getsum(int x)
{
int ans=0,i;
for(i=x;i>0;i-=lowbit(i))
{
ans+=c[i];
}
return ans;
}
void add(int n,int x,int key)
{
int i;
for(i=x;i<=n;i+=lowbit(i))
{
c[i]+=key;
}
}
int main()
{
int n,m,i,l,r,k,x;
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>x;
if(x==0)
{
cin>>l>>r;
add(n,l,1);
add(n,r+1,-1);
}
if(x==1)
{
cin>>k;
cout<<getsum(k)<<endl;
}
}
return 0;
}
*/