P3503 [POI 2010] KLO-Blocks
题目描述
Bytie 在生日时收到了一套木块。这些木块彼此无法区分,因为它们都是相同大小的立方体。Bytie 通过将一个木块放在另一个木块上形成了堆。不久,他就有了一整排这样的堆,一个接一个地排成一条直线。当然,这些堆的高度可以不同。Bytie 的父亲 Byteasar 给了他一个谜题。他给了他一个数字 $k$,并要求重新排列这些木块,使得高度至少为 $k$ 的连续堆的数量最大化。然而,Bytie 只能从严格高于 $k$ 的堆中取出顶部的木块,并将其放在相邻的堆上。此外,Bytie 不允许形成新的堆,他只能在已经存在的堆之间移动木块。
输入格式
标准输入的第一行有两个用空格分隔的整数:$n$ ($1 \le n \le 10^6$),表示堆的数量,以及 $m$ ($1 \le m \le 50$),表示 Byteasar 的请求数量。堆从 $1$ 编号到 $n$。第二行有 $n$ 个整数 $a_i$,用空格分隔 ($1 \le a_i \le 10^9$)。数字 $a_i$ 表示第 $i$ 个堆的高度。第三行有 $m$ 个整数 $k_j$,用空格分隔 ($1 \le k_j \le 10^9$),表示每个请求的参数 $k_j$。
输出格式
你的程序应输出 $m$ 个整数,用空格分隔,其中第 $j$ 个整数是给定初始堆设置和参数 $k_j$ 的谜题答案。
说明/提示
$1 \le n \le 10^6$,$1 \le m \le 50$,$1 \le a_i, k \le 10^9$。
题面翻译由 ChatGPT-4o 提供。