P4650 [COCI 2017/2018 #5] Karte

题目描述

有$N$ 张牌叠在一起,第 $i$ 张牌上,有一个数字 $a_i$ 表示它下面**至少**有 $a_i$ 张牌上的信息是错误的,若它下面确实有至少 $a_i$ 张牌的信息是错误的,那这张牌的信息就是正确的,否则这张牌的信息就是错误的。(我们认为最下面的牌的后面有 $0$ 张错误的) 现在需要你重新调整牌的顺序,使得正好有 $K$ 张牌上的信息是错误的。

输入格式

第一行两个正整数 $N$ 和 $K$ $( 1 ≤ N≤ 5×10^5,0 ≤ K≤ N )$表示牌的张数和要求的错误信息的个数。 接下来 $N$ 行,每行一个数,表示对应的 $a_i$ $(0 ≤ a_i≤ 5×10^5 )$

输出格式

如果调整方案不存在,输出$-1$。否则输出由顶部到底部 $N$ 张牌对应的 $a_i$,若有多种方案,输出任意一种即可。

说明/提示

$30\%$的数据 $N≤ 16$。 另有$40\%$的数据 $N≤ 2000$。 **样例 2 说明:** 第 $5$ 张牌上写的是$2$,但是其后面只有 $0$ 张错误,所以它是错误的。 第 $4$ 张牌上写的是$1$,其后面有 $1$ 张错误(第五张),所以它是正确的。 第 $3$ 张牌上写的是$0$,其后面有 $1$ 张错误(第五张),所以它是正确的。 第 $2$ 张牌上写的是$3$,但是其后面只有 $1$ 张错误(第五张),所以它是错误的。 第 $1$ 张牌上写的是$3$,但是其后面只有 $2$ 张错误(第五张,第二张),所以它是错误的。 因此总共有 $3$ 张是错误的。