#P3503. [POI 2010] KLO-Blocks

[POI 2010] KLO-Blocks

Description

Bytie 在生日时收到了一套木块。这些木块彼此无法区分,因为它们都是相同大小的立方体。Bytie 通过将一个木块放在另一个木块上形成了堆。不久,他就有了一整排这样的堆,一个接一个地排成一条直线。当然,这些堆的高度可以不同。Bytie 的父亲 Byteasar 给了他一个谜题。他给了他一个数字 kk,并要求重新排列这些木块,使得高度至少为 kk 的连续堆的数量最大化。然而,Bytie 只能从严格高于 kk 的堆中取出顶部的木块,并将其放在相邻的堆上。此外,Bytie 不允许形成新的堆,他只能在已经存在的堆之间移动木块。

Input Format

标准输入的第一行有两个用空格分隔的整数:nn (1n1061 \le n \le 10^6),表示堆的数量,以及 mm (1m501 \le m \le 50),表示 Byteasar 的请求数量。堆从 11 编号到 nn。第二行有 nn 个整数 aia_i,用空格分隔 (1ai1091 \le a_i \le 10^9)。数字 aia_i 表示第 ii 个堆的高度。第三行有 mm 个整数 kjk_j,用空格分隔 (1kj1091 \le k_j \le 10^9),表示每个请求的参数 kjk_j

Output Format

你的程序应输出 mm 个整数,用空格分隔,其中第 jj 个整数是给定初始堆设置和参数 kjk_j 的谜题答案。

5 6
1 2 1 1 5
1 2 3 4 5 6
5 5 2 1 1 0

Hint

1n1061 \le n \le 10^61m501 \le m \le 501ai,k1091 \le a_i, k \le 10^9

题面翻译由 ChatGPT-4o 提供。