CF1923D Slimes
题目描述
有 $n$ 个史莱姆排成一行,编号从 $1$ 到 $n$,从左到右依次排列。第 $i$ 个史莱姆的体积为 $a_i$。
每一秒,都会发生以下事件:恰好有一个史莱姆吃掉它的一个相邻史莱姆,并且它的体积增加被吃掉的史莱姆的体积。一个史莱姆只有在它的体积严格大于它的相邻史莱姆时,才能吃掉这个相邻史莱姆。如果没有任何一个史莱姆的体积严格大于它的相邻史莱姆,则该过程结束。
例如,假设 $n=5$,$a=[2,2,3,1,4]$。该过程可能如下进行:
- 首先,第 $3$ 个史莱姆吃掉第 $2$ 个史莱姆。第 $3$ 个史莱姆的体积变为 $5$,第 $2$ 个史莱姆被吃掉。
- 然后,第 $3$ 个史莱姆吃掉第 $1$ 个史莱姆(由于第 $2$ 个史莱姆已被吃掉,他们现在是相邻的)。第 $3$ 个史莱姆的体积变为 $7$,第 $1$ 个史莱姆被吃掉。
- 接着,第 $5$ 个史莱姆吃掉第 $4$ 个史莱姆。第 $5$ 个史莱姆的体积变为 $5$,第 $4$ 个史莱姆被吃掉。
- 最后,第 $3$ 个史莱姆吃掉第 $5$ 个史莱姆(由于第 $4$ 个史莱姆已被吃掉,他们现在是相邻的)。第 $3$ 个史莱姆的体积变为 $12$,第 $5$ 个史莱姆被吃掉。
对于每一个史莱姆,计算在所有可能的操作顺序中,它被其他史莱姆吃掉所需的最少秒数;如果不可能被吃掉,则输出 $-1$。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例的第一行包含一个整数 $n$($1 \le n \le 3 \times 10^5$),表示史莱姆的数量。
第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$),表示每个史莱姆的体积。
所有测试用例中 $n$ 的总和不超过 $3 \times 10^5$。
输出格式
对于每个测试用例,输出 $n$ 个整数。第 $i$ 个整数表示第 $i$ 个史莱姆被其他史莱姆吃掉所需的最少秒数;如果不可能被吃掉,则输出 $-1$。
说明/提示
由 ChatGPT 4.1 翻译