设读入的数组是a,树状数组用来维护a数组区间和sum,线段树用来维护一个另一个数组ssum的区间和,区间每个点a[i]*(n-i+1),那么l-r的答案是l-r的ssum-(n-r)*(sum[r]-sum[l-1]) (纸上画一下就知道了) #include<bits/stdc++.h> using namespace std; const int maxn=100010; int n,q,ql,qr,p; long long v,_sum; long long sum[maxn],ssum…