0
点赞
收藏
分享

微信扫一扫

校门外的树

犹大之窗 2022-01-04 阅读 67
c++

在这里插入图片描述
在这里插入图片描述

代码

#include<stdio.h>
#define maxn 5000009
int c1[maxn],c2[maxn],n;//c1存左端,c2存右端
int lowbit(int x)
{
    return x&(-x);
}
int up(int c[],int x,int k)
{
    while(x<=n)
    {
        c[x]=c[x]+k;
        x=x+lowbit(x);
    }
}
int sum(int c[],int x)
{
    int ans=0;
    while(x>0)
    {
        ans=ans+c[x];
        x=x-lowbit(x);
    }
    return ans;
}
int main()
{
    int m,i;
    scanf("%d %d",&n,&m);
    while(m--)
    {
        int k,l,r;
        scanf("%d %d %d",&k,&l,&r);
        if(k==1)
        {
            up(c1,l,1);
            up(c2,r,1);
        }
        else
        {
            int a=sum(c2,l-1);
            int b=sum(c1,r);
            printf("%d\n",b-a);
        }
    }
}
举报

相关推荐

0 条评论