rt。以下为半成品代码,本蒟蒻有个疑问:为什么两个 ci 输出的不一样?
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n, c[100001], a[100001], m;
int lowbit(int x){
return x & (-x);
}
void add(int x, int y){
for(; x <= n; x += lowbit(x));
c[x] += y, printf("%lld ", c[x]);;
}
int sum(int x){
int s = 0;
for(; x > 0; x -= lowbit(x));
s += c[x];
return s;
}
signed main(){
scanf("%lld%lld", &n, &m);
for(int i = 1; i <= n; ++i){
scanf("%lld", &a[i]);
add(i, a[i]);
}
puts("");
for(int i = 1; i <= n; ++i)
printf("%d ", c[i]);
puts("");
for(int i = 1; i <= m; ++i){
int op, l, r, k;
scanf("%lld", &op);
if(op == 1){
scanf("%lld%lld%lld", &l, &r, &k);
add(l, k);
add(r + 1, -k);
}
else if(op == 2){
scanf("%lld%lld", &l, &r);
printf("%.4lf\n", double(sum(r) - sum(l - 1) + 0.0) / (r - l + 1));
}
else{
scanf("%lld%lld", &l, &r);
}
}
return 0;
}