CF1742E Scuza

题目描述

Timur 有一个有 $n$ 级台阶的楼梯。第 $i$ 级台阶比前一级高 $a_i$ 米。第一级台阶比地面高 $a_1$ 米,地面高度为 $0$ 米。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1742E/1bd007a2ef6a288af14a4e7592f626054d160b81.png) 这是第一个测试用例的楼梯示意图。Timur 有 $q$ 个问题,每个问题用一个整数 $k_1, \dots, k_q$ 表示。对于每个问题 $k_i$,你需要输出 Timur 如果腿长为 $k_i$ 时,最多能爬到的高度。Timur 只有在腿长至少为 $a_j$ 时,才能爬上第 $j$ 级台阶。换句话说,只有当 $k_i \geq a_j$ 时,才能爬上第 $j$ 级台阶。 注意,每个问题需要独立回答。

输入格式

第一行包含一个整数 $t$($1 \leq t \leq 100$)——表示测试用例的数量。 每个测试用例的第一行包含两个整数 $n, q$($1 \leq n, q \leq 2\cdot10^5$)——台阶数和问题数。 每个测试用例的第二行包含 $n$ 个整数($1 \leq a_i \leq 10^9$)——每一级台阶的高度。 每个测试用例的第三行包含 $q$ 个整数($0 \leq k_i \leq 10^9$)——每个问题的腿长。 保证所有测试用例中 $n$ 的总和不超过 $2\cdot10^5$,$q$ 的总和不超过 $2\cdot10^5$。

输出格式

对于每个测试用例,输出一行包含 $q$ 个整数,分别为每个问题的答案。 请注意,某些问题的答案可能无法用 32 位整数类型存储,因此你应在编程语言中使用至少 64 位整数类型(如 C++ 的 long long)。

说明/提示

考虑题目描述中的第一个测试用例。 - 如果 Timur 的腿长为 $1$,他只能爬上第一级台阶,最高能到达 $1$ 米。 - 如果 Timur 的腿长为 $2$ 或 $4$,他只能爬上第 $1,2,3$ 级台阶,最高能到达 $1+2+1=4$ 米。 - 如果 Timur 的腿长为 $9$ 或 $10$,他可以爬完整个楼梯,最高能到达 $1+2+1+5=9$ 米。 在第二个测试用例的第一个问题中,Timur 没有腿,所以他连一级台阶都上不去。:( 由 ChatGPT 4.1 翻译