A83459.台阶前缀查询

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有一段台阶,共有 nn 级,第 ii 级台阶的高度为 aia_i

接下来有 qq 次询问。每次给出一个数 kk,你需要:

  • 从第 11 级台阶开始往上走,只要遇到的最高台阶高度不超过 kk,就一直走;
  • 设能走到的最远位置为第 ii 级(若第 11 级的高度就大于 kk,则 i=0i=0),请输出从第 11 级到第 ii 级所有台阶高度之和:j=1iaj\sum_{j=1}^{i} a_j

等价地说:令前缀最大值数组 pi=max(a1,,ai)p_i=\max(a_1,\dots,a_i),前缀和 si=j=1iajs_i=\sum_{j=1}^{i} a_j

对每个询问的 kk,找到最大的 ii 使得 pikp_i\le k,答案为 sis_i(若不存在则输出 00)。

输入格式

第一行两个整数 n,qn, q —— 台阶数与询问数。

第二行 nn 个整数 a1,,ana_1,\dots,a_n

第三行 qq 个整数 k1,,kqk_1,\dots,k_q,分别为每个询问给出的 kk

输出格式

输出一行包含 qq 个整数,第 ii 个数是对 kik_i 的答案。数之间用空格分隔。

输入输出样例

  • 输入#1

    4 5
    1 2 1 5
    1 2 4 9 10
    

    输出#1

    1 4 4 9 9
    

说明/提示

1n,q2×1051\le n,q \le 2\times 10^5

1ai1091\le a_i \le 10^9

0ki1090\le k_i \le 10^9

对于样例:

前缀最大值为 [1,2,2,5][1,2,2,5],前缀和为 [1,3,4,9][1,3,4,9]

  • k=1k=1:满足 pi1p_i\le1 的最大 i=1i=1,输出 s1=1s_1=1
  • k=2k=2:最大 i=3i=3,输出 s3=4s_3=4
  • k=4k=4:最大 i=3i=3,输出 s3=4s_3=4
  • k=9,10k=9,10:最大 i=4i=4,输出 s4=9s_4=9
首页