CF83B Doctor

题目描述

队列中有 $n$ 只动物正在排队等着见“杜利特医生”。每当一只动物进入诊室,医生会对它进行检查,开处方,安排检查,甚至可能安排额外的检查。医生非常了解森林里的所有动物,因此她准确知道队列中第 $i$ 只动物一共需要见医生 $a_{i}$ 次。我们假设检查花费的时间远远超过做检查和其他附加流程,因此每当一只动物结束诊疗离开后,会立即回到队尾(当然,如果它已经获得了需要的全部检查次数,它就不用再排队,直接回家)。 医生计划在接待了 $k$ 只动物后下班,因此她需要知道那时队列的情况。由于医生工作时间很长,不能被这些琐事分心,于是请你帮她计算。

输入格式

输入的第一行包含两个用空格分隔的整数 $n$ 和 $k$($1 \leq n \leq 10^{5}$,$0 \leq k \leq 10^{14}$)。第二行包含 $n$ 个整数 $a_{1},a_{2},...,a_{n}$($1 \leq a_{i} \leq 10^{9}$)。 请不要在 C++ 中使用 %lld 格式符读写 64 位整数。推荐使用 cin、cout 流(也可以使用 %I64d 格式符)。

输出格式

如果医生总共完成的检查次数少于 $k$ 次,则输出一个数字“-1”(不含引号)。否则,输出一行按顺序排列的动物编号,表示此时队列的情况。 注意输出的序列可能为空。在这种情况下,你可以什么都不输出,也可以只输出一个回车,两者都会被接受。

说明/提示

对于第一个样例: - 检查前:$ \{1,2,3\} $ - 第一次检查后:$ \{2,3\} $ - 第二次检查后:$ \{3,2\} $ - 第三次检查后:$ \{2\} $ 对于第二个样例: - 检查前:$ \{1,2,3,4,5,6,7\} $ - 第一次检查后:$ \{2,3,4,5,6,7\} $ - 第二次检查后:$ \{3,4,5,6,7,2\} $ - 第三次检查后:$ \{4,5,6,7,2,3\} $ - 第四次检查后:$ \{5,6,7,2,3\} $ - 第五次检查后:$ \{6,7,2,3,5\} $ - 第六次检查后:$ \{7,2,3,5,6\} $ - 第七次检查后:$ \{2,3,5,6\} $ - 第八次检查后:$ \{3,5,6,2\} $ - 第九次检查后:$ \{5,6,2,3\} $ - 第十次检查后:$ \{6,2,3\} $ 由 ChatGPT 5 翻译