记录编号 166192 评测结果 AAAAAAAAAAAAAAAA
题目名称 数列操作A 最终得分 100
用户昵称 Gravatar啊吧啦吧啦吧 是否通过 通过
代码语言 C++ 运行时间 0.154 s
提交时间 2015-06-14 15:23:18 内存使用 0.67 MiB
显示代码纯文本
#include<cstdio>

using namespace std;

const int MAXN = 100001;
int n, m, c[MAXN] = {0}, lobit(int), ask(int), qread();
void update(int, int), print(int, int), init();

main()
{
	freopen("shulie.in", "r", stdin);
	freopen("shulie.out", "w", stdout);
	init();
	fclose(stdin);
	fclose(stdout);
}

int lobit(int x)
{
	return x & (-x);
}

void update(int i, int x)
{
	while(i <= n)
	{
		c[i] += x;
		i += lobit(i);
	}
}

void print(int l, int r)
{
	printf("%d\n", ask(r) - ask(l - 1));
}

void init()
{
	n = qread();
	for(int i = 1; i <= n; i ++)
	{
		int x;
		x = qread();
		update(i, x);
	}
	m = qread();
	for(; m --;)
	{
		char c = 0;
		int a, b;
		do
			c = getchar();
		while(c != 'A' && c != 'S');
		a = qread();
		b = qread();
		if(c == 'A')
			update(a, b);
		else if(c == 'S')
			print(a, b);
	}
}

int ask(int x)
{
	int ans = 0;
	for(int i = x; i > 0; i -= lobit(i))
		ans += c[i];
	return ans;
}

int qread()
{
	int ans = 0;
	char ch;
	do
		ch = getchar();
	while(ch < '0' || ch > '9');
	do
	{
		ans = ans * 10 + ch - '0';
		ch = getchar();
	}
	while(ch >= '0' && ch <= '9');
	return ans;
}