记录编号 164880 评测结果 AAAAAAAAAAAAAATA
题目名称 数列操作A 最终得分 93
用户昵称 GravatarOI88 是否通过 未通过
代码语言 C++ 运行时间 3.114 s
提交时间 2015-06-07 12:00:54 内存使用 4.13 MiB
显示代码纯文本
#include <cstdio>
#include <iostream> 
using namespace std;
void work();
void modify(int,int);
int lowbit(int);
long long sum(int); 
long long data[500001],temp;
int n,l,r;
int main()
{
    work();
    return 0;
}
void work()
{
	freopen("shulie.in","r",stdin);
	freopen("shulie.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&temp);
        modify(i,temp);
    }
    scanf("%d",&temp);
	for(int i=1;i<=temp;i++)
	{
		string goal;
		cin>>goal;
		scanf("%d%d",&l,&r);
		if(goal=="SUM")
        	printf("%lld\n",sum(r)-sum(l-1)); 
        if(goal=="ADD")
        	modify(l,r);
    }
    return;
}
int lowbit(int x)
{
    return x&(-x);
}
void modify(int pos,int ds) 
{
    while(pos<=n) 
    {
        data[pos]+=ds; 
        pos+=lowbit(pos); 
    }
    return;
}
long long sum(int i)
{
    long long sk=0; 
    while(i>0)		
    {
        sk+=data[i];	 
        i-=lowbit(i);
    }
    return sk;
}