记录编号 58243 评测结果 AAAAAAAAAA
题目名称 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 2.706 s
提交时间 2013-04-18 18:37:47 内存使用 12.64 MiB
显示代码纯文本
    #include <fstream>
    #include <iomanip>
    #define F_I "treed.in"
    #define F_O "treed.out"
    using namespace std;
    ifstream fin(F_I);
    ofstream fout(F_O);
    const int Nx=600002;
    int N,M,A[Nx/2],Pos[Nx/2],Sum;
    class IT{
    public:
    int l,r,s,suc[2];
    }Seg[Nx];
    #define H Seg[p]
    #define L Seg[p].suc[0]
    #define R Seg[p].suc[1]
    void mt(int p){
    H.s=Seg[L].s+Seg[R].s;
    }
    void Build_IT(int p,int l,int r){
    int m=(l+r)/2;
    H.l=l;
    H.r=r;
    if(l==r){
    H.s=A[l];
    Pos[l]=p;
    return;
    }
    H.suc[0]=p<<1;
    H.suc[1]=(p<<1)+1;
    Build_IT(p<<1,l,m);
    Build_IT((p<<1)+1,m+1,r);
    mt(p);
    }
    void query(int p,int l,int r){
    int m=(H.l+H.r)/2;
    if(H.l==l && H.r==r){
    Sum+=H.s;
    return;
    }
    if(m<l)	query(R,l,r);
    else
    if(m>=r)query(L,l,r);
    else{
    query(L,l,m);
    query(R,m+1,r);
    }
    }
    void init(){
    int i;
    fin>>N;
    for(i=1;i<=N;i++)
    fin>>A[i];
    Build_IT(1,1,N);
    }
    void Processing(){
    int i,a,b;
    fin>>M;
    for(i=1;i<=M;i++){
    Sum=0;
    fin>>a>>b;
    query(1,a,b);
    int Del=(a+b)/2,j=Pos[Del];
    Seg[j].s=0;
    j=j>>1;
    while(j){
    mt(j);
    j=j>>1;
    }
    fout<<setiosflags(ios::fixed)<<setprecision(2)<<double(Sum)*3.14<<endl;
    }
    }
    int main(){
    init();
    Processing();
    fin.close();
    fout.close();
    return 0;
    }