记录编号 126928 评测结果 AAAAAAAAAA
题目名称 最终得分 100
用户昵称 Gravatar乌龙猹 是否通过 通过
代码语言 C++ 运行时间 0.718 s
提交时间 2014-10-14 17:47:32 内存使用 1.82 MiB
显示代码纯文本
#include<cstdio>
#define Lowbit(x) x & (-x)
using namespace std;
int n,m;
int a[200001];
int c[200001];
void add(int,int);
int pr(int);
int main()
{
	freopen("treed.in","r",stdin);
	freopen("treed.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		add(i,a[i]);
	}
	scanf("%d",&m);
	for(int i=1;i<=m;i++)
	{
		int x,y;
		scanf("%d%d",&x,&y);
		double k=(pr(y)-pr(x-1))*3.14;
		printf("%.2f\n",k);
		add((x+y)/2,-a[(x+y)/2]);
		a[(x+y)/2]=0;
	}
	return 0;
}
void add(int i,int x)
{
	while(i<=n)
	{
		c[i]+=x;
		i+=Lowbit(i);
	}
}
int pr(int x)
{
	int sum=0;
	while(x)
	{
		sum+=c[x];
		x-=Lowbit(x);
	}
	return sum;
}