#include<stdio.h>
int tree[1000000],n;
int lowbit(int x)
{
return x&(-x);
}
int Query(int x)//查询x项的前缀和 ;
{
int res=0;
while(x)
{
res+=tree[x];
x-=lowbit(x);
}
return res;
}
void Add(int x,int v)//在x位加v;
{
while(x<=n)
{
tree[x]+=v;
x+=lowbit(x);
}
}
int main()
{
int a[100000],x;
scanf("%d %d",&n,&x);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++)
{
Add(i,a[i]);//树状数组的预处理,初始化
}
printf("%d\n",Query(x));
return 0;
}
树状数组
最新推荐文章于 2024-04-02 23:40:15 发布