先看两种情况的贡献:
1.第一种的贡献也就是l1到r1的总和加上l2到r2的总和.
2.第二种的贡献是l1到r1的总和加上l2到r2的总和再加上l2到r1的总和
#include <bits/stdc++.h>
using namespace std;
给出一个长度为n的整数数组a,下标从1开始。
q次询问,每次询问给出两个区间 [l1,r1],[l2,r2],先让下标在[l1,r1]里的元素乘以2,再让下标在[l2,r2]里的元素乘以 2,输出每次询问操作后数组总和是多少?
询问是相互独立的,每次询问后都把数组还原为初始状态。
第一行包含两个整数n q(1≤n,q≤2×105),表示数组大小和询问个数。
第二行包含 n 个整数 ai(−105≤ai≤105),表示数组 a。
接下来q行,每行四个整数l1 r1 l2 r2 (1≤l1≤r1≤n,1≤l2≤r2≤n),表示操作区间。
输出包含q行,每行一个整数,表示每次询问操作后的数组总和。
输入
3 2
1 2 1
1 2 2 3
1 1 2 2
输出
12
7
说明
第一次询问:[1,2] 内元素乘 2,a=[2,4,1],[2,3] 内元素乘 2,a=「2,8,2],数组总和是 12。
第二次询问:[1,1]内元素乘 2,a=[2,2,1],[2,2]内元素乘 2,a=[2,4,1],数组总和是 7。