E. Scuza

time limit per test

3 seconds

memory limit per test

256 megabytes

Timur has a stairway with nn steps. The ii-th step is aiai meters higher than its predecessor. The first step is a1a1 meters higher than the ground, and the ground starts at 00 meters.

The stairs for the first test case.

Timur has qq questions, each denoted by an integer k1,...,kqk1,...,kq. For each question kiki, you have to print the maximum possible height Timur can achieve by climbing the steps if his legs are of length kiki. Timur can only climb the jj-th step if his legs are of length at least ajaj. In other words, ki≥ajki≥aj for each step jj climbed.

Note that you should answer each question independently.

Input

The first line contains a single integer tt (1≤t≤1001≤t≤100) --- the number of test cases.

The first line of each test case contains two integers n,qn,q (1≤n,q≤2⋅1051≤n,q≤2⋅105) --- the number of steps and the number of questions, respectively.

The second line of each test case contains nn integers (1≤ai≤1091≤ai≤109) --- the height of the steps.

The third line of each test case contains qq integers (0≤ki≤1090≤ki≤109) --- the numbers for each question.

It is guaranteed that the sum of nn does not exceed 2⋅1052⋅105, and the sum of qq does not exceed 2⋅1052⋅105.

Output

For each test case, output a single line containing qq integers, the answer for each question.

Please note, that the answer for some questions won't fit into 32-bit integer type, so you should use at least 64-bit integer type in your programming language (like long long for C++).

Example

Input

Copy

复制代码

3

4 5

1 2 1 5

1 2 4 9 10

2 2

1 1

0 1

3 1

1000000000 1000000000 1000000000

1000000000

Output

Copy

复制代码
1 4 4 9 9 
0 2 
3000000000 

Note

Consider the first test case, pictured in the statement.

  • If Timur's legs have length 11, then he can only climb stair 11, so the highest he can reach is 11 meter.
  • If Timur's legs have length 22 or 44, then he can only climb stairs 11, 22, and 33, so the highest he can reach is 1+2+1=41+2+1=4 meters.
  • If Timur's legs have length 99 or 1010, then he can climb the whole staircase, so the highest he can reach is 1+2+1+5=91+2+1+5=9 meters.

In the first question of the second test case, Timur has no legs, so he cannot go up even a single step. :(

解题说明:此题是一道模拟题,根据题目意思, 需要记录每个台阶相应位置的总高度, 也就是求出前缀和 ,之后还要存储好到达所对应高度坐标中的 Tim所需要的跨越高度是多少,并记录到满足该条件后对应的前缀和下标是多少。这里采用upper_bound(a + 1, a + n + 1, x) - a - 1 在数组 a 中查找第一个大于 x 的元素的位置,然后返回该位置的前一个索引(即最后一个小于等于 x 的元素的位置)

cpp 复制代码
#include<iostream>
#include<algorithm>
using namespace std;
int a[200005];
long long b[200005];

int main()
{
	int t, i, x, n, q;
	cin >> t;
	while (t--) 
	{
		cin >> n >> q;
		for (i = 1; i <= n; ++i) 
		{
			cin >> x;
			a[i] = max(a[i - 1], x);
			b[i] = b[i - 1] + x;
		}

		while (q--)
		{
			cin >> x;
			cout << b[upper_bound(a + 1, a + n + 1, x) - a - 1] << ' ';
		}
		cout << '\n';
	}
	return 0;
}
相关推荐
生成论实验室1 分钟前
《源·觉·知·行·事·物:生成论视域下的统一认知语法》导论:在破碎的世界寻找统一语法
人工智能·科技·算法·架构·创业创新
承渊政道2 分钟前
【动态规划算法】(两个数组的DP问题深度剖析与求解方法)
数据结构·c++·学习·算法·leetcode·动态规划·哈希算法
杨连江6 分钟前
原子级平面限域协同晶核诱导定向生长单层鳞片石墨的研究
算法
MATLAB代码顾问12 分钟前
混合粒子群-模拟退火算法(HPSO-SA)求解作业车间调度问题——附MATLAB代码
算法·matlab·模拟退火算法
Felven16 分钟前
C. Prefix Min and Suffix Max
算法
加农炮手Jinx17 分钟前
LeetCode 26. Remove Duplicates from Sorted Array 题解
算法·leetcode·力扣
加农炮手Jinx17 分钟前
LeetCode 88. Merge Sorted Array 题解
算法·leetcode·力扣
Hhy_110717 分钟前
【从零开始学习数据结构 ④】:栈 ——后进先出的艺术
c语言·数据结构·学习·visual studio
格林威17 分钟前
线阵工业相机:如何计算线阵相机的行频(Line Rate)?公式+实例
开发语言·人工智能·数码相机·算法·计算机视觉·工业相机·线阵相机
yueyue54320 分钟前
透过现象看本质:以fast_lio架构的整套算法的局部避障改为TEB算法为例深度探讨——如何成为一个合格的算法架构师?
算法·架构