记录编号 166269 评测结果 AAAAAAAAAA
题目名称 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.889 s
提交时间 2015-06-14 20:07:00 内存使用 6.42 MiB
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
inline int in()
{
	char c=getchar();
	int x=0;
	while(c<'0'||c>'9')c=getchar();
	for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
	return x;
}
int n,sum[800060],m,k,h,a[800060];
void Build(int x,int y,int r)
{
	if(x==y)
	{
		a[x]=sum[r]=in();
		return;
	}
	int mid=(x+y)>>1;
	Build(x,mid,r<<1);
	Build(mid+1,y,(r<<1)+1);
	sum[r]=sum[r<<1]+sum[(r<<1)+1];
}
void add(int x,int y,int r,int u,int l)
{
	if(r==u)
	{
		sum[l]+=y;
		return;
	}
	int mid=(r+u)>>1;
	if(x<=mid)
	  add(x,y,r,mid,l*2);
	else
	  add(x,y,mid+1,u,l*2+1);
	sum[l]=sum[l<<1]+sum[(l<<1)+1];
}
int wen(int x,int y,int r,int u,int l)
{
	if(x<=r&&y>=u)
	{
		return sum[l];
	}
	int mid=(r+u)>>1;
	int he=0;
	if(x<=mid)
	  he+=wen(x,y,r,mid,l<<1);
	if(y>mid)
	  he+=wen(x,y,mid+1,u,(l<<1)+1);
	return he;
}
int main()
{   freopen("treed.in","r",stdin);
	freopen("treed.out","w",stdout);
	n=in();
	Build(1,n,1);
	/*for(int i=1;i<=n;++i)
	 cout<<sum[i]<<" ";
	cout<<endl;*/
	m=in();
	for(int i=1;i<=m;++i)
	{
		k=in();
		h=in();
		printf("%.2f\n",wen(k,h,1,n,1)*3.14);
		int g=(k+h)>>1;
		add(g,-a[g],1,n,1);
		a[g]=0;
	}
	//system("pause");
}