记录编号 58230 评测结果 AAAAAAAAAA
题目名称 最终得分 100
用户昵称 Gravatarfeng 是否通过 通过
代码语言 C++ 运行时间 2.608 s
提交时间 2013-04-18 18:23:42 内存使用 11.54 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
struct node{
	long long data;
}Tree[1000001];
int n,ax,ay,delta;
int a[200002];
void updata(int l,int r,int root){
	if (l>ay || r<ax) return;
	if (l>=ax && r<=ay){
		if (Tree[root].data!=0 || delta>=0)
		Tree[root].data+=delta;
	//	if (Tree[root].data<0 && delta<0) 
	//		Tree[root].data+=delta;
		return ;
	}
	int m=(l+r)/2;
	updata(l,m,root*2);
	updata(m+1,r,root*2+1);
	Tree[root].data=Tree[root*2].data+Tree[root*2+1].data;
}
long long search(int l,int r,int root){
	if (l>ay || r<ax) return 0;
	if (l>=ax && r<=ay){
		return Tree[root].data;
	}
	int m=(l+r)/2;
	long long tmp1,tmp2;
	tmp1=search(l,m,root*2);
	tmp2=search(m+1,r,root*2+1);
	return tmp1+tmp2;
}
void init(){
	freopen("treed.in","r",stdin);
	freopen("treed.out","w",stdout);
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		ax=i;
		ay=i;
		delta=a[i];
		updata(1,n,1);
	}
	
}
void work(){
	long long tmp1,tmp2,tmp;
	int m;
	scanf("%d",&m);
	for (int i=1;i<=m;i++){
		scanf("%d%d",&ax,&ay);
		tmp=search(1,n,1);
		tmp2=tmp*14;
		tmp1=tmp*3+tmp2/100;
		tmp2=tmp2%100;
		cout<<tmp1<<'.';
		if (tmp2<10) cout<<'0';
		cout<<tmp2<<endl;
//		printf("%d.%d\n",tmp1,tmp2);
		ax=(ax+ay)/2;
		ay=ax;
		delta=-a[ax];
		updata(1,n,1);
	}
}
int main()
{
	init();
	work();
	return 0;
}