#include using namespace std; // #define ASSERTM(c,m){if(!(c)){cerr<<"assert failed :"<<#c<<" "<>1); build(t,a,s,m,n*2); build(t,a,m+1,e,n*2+1); t[n]=t[n*2]+t[n*2+1]; } int query(int t[],int s,int e,int n,int l,int r){ if(l<=s&&e<=r){ return t[n]; } if(e>1),sum=0; sum+=query(t, s, m, n*2, l, r); sum+=query(t, m+1, e, n*2+1, l, r); return sum; } int main(int argc,char *argv[]){ ASSERT(argc==3); ifstream ifile(argv[1]); ifstream afile(argv[2]); ASSERT(ifile.is_open()==true) ASSERT(afile.is_open()==true) int n; ifile>>n; int a[n+1]; int t[n*4+1]; for(int i=1;i<=n;i++){ ifile>>a[i]; } build(t,a,1,n,1); // for(int i=1;i<=n*4;i++){ // PRINT_VALUE(i); // PRINT_VALUE(t[i]); // } int m; ifile>>m; for(int i=1;i<=m;i++){ int cans; afile>>cans; int a,b; ifile>>a>>b; int myans; // myans=query(t,1,n,1,a,b); PRINT_VALUE((myans=query(t,1,n,1,a,b),myans)); ASSERT(cans==myans) } }