15229. 贪玩的二小姐

【题目描述】
红魔馆的二小姐芙兰朵露·斯卡雷特非常贪玩。这天,她拿到了一个数组,于是她就开始玩起了这个数组。
已知数组的长度为n,第i个数是ai。
芙兰每次选取一个长度为m的区间,将整个区间翻转。她总共进行了q次这样的操作,并保证操作的区间是不递减的。
例如,对于数组{1,4,3,5,8,9}而言,芙兰进行3次操作,每次取一个长度为4的区间进行翻转,取的区间分别是[1,4],[2,5],[2,5]。
第一次取[1,4]区间,该区间本来是{1,4,3,5},翻转后变成{5,3,4,1},整个数组变成{5,3,4,1,8,9}
第一次取[2,5]区间,该区间本来是{3,4,1,8},翻转后变成{8,1,4,3},整个数组变成{5,8,1,4,3,9}
第一次取[2,5]区间,该区间本来是{8,1,4,3},翻转后变成{3,4,1,8},整个数组变成{5,3,4,1,8,9}
芙兰想和聪明的你一起玩这个游戏,她希望每次取了区间后,你能立刻回答出区间中所有数之和。你能完成这个挑战吗?
【输入】
第一行输入两个正整数n和m,分别代表数组长度、芙兰每次取的区间长度。    (1≤m≤300000)
第二行输入n个整数ai,代表数组中每个数的初始值。            (0≤ai≤100000000)
第三行输入一个正整数q,代表芙兰的操作次数。            (1≤q≤300000)
第四行输入q个非递减的正整数bi,代表芙兰第i次操作取的是[bi,bi+m-1]区间。(1≤bi≤n-m+1)
【输出】
输出一行q个正整数,用空格隔开。分别代表每次芙兰所取的区间中所有数之和。
【样例输入】
6 4
1 4 3 5 8 9
3
1 2 2
【样例输出】
13 16 16

【备注】

输出的最后一个数后面请添加空格

难度等级: 4
总通过次数: 2
总提交次数: 27
  • two pointers,data structures