atcoder#WTF19A. Magic
Magic
题目描述
すぬけ君はマジックショーでの勝負に参加しました。
ショーのマジシャンは、見た目が同じ 個の箱を用意していました。 彼はそのうち一つに財宝を入れてからそれらの箱を閉じ、箱の順番を無作為に入れ替えてから から までの番号を振りました。
箱の順番を入れ替えられてしまったので、どの箱に財宝が入っているかはすぬけ君には分からなくなりました。 この勝負は、すぬけ君が財宝の入った箱を開けることができれば彼の勝ちです。 それなら、すべての箱を一斉に開ければ必ず勝てるではないかと思われるかもしれません。 しかし、以下のようにいくつか特殊なルールがあります。
- すぬけ君は、箱を一つずつ開けなければならない。一つの箱を開けてその中身を確認したら、その箱は次の箱を開ける前に閉じなければならない。
- 箱 は、最大で 回しか開けてはならない。
- マジシャンは、何らかの手品を用いて閉じた箱から別の閉じた箱に財宝を移すことがある。 簡略化のため、すぬけ君がいずれかの箱を開けている間に財宝が移されることはないとしてよいが、それ以外のあらゆる機会 (すぬけ君が最初に箱を開ける前、またはすぬけ君がいずれかの箱を閉じてから次の箱を開けるまでの間) に財宝が移される可能性がある。
- マジシャンは、上記の財宝の移動を最大で 回行う可能性がある。
すぬけ君は、財宝の初期位置やマジシャンがどのように財宝を移動させるかによらず、必ず勝負に勝つことができるでしょうか?
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
問題の答えが No であれば、-1
とのみ出力せよ。
そうでなければ、すぬけ君が取りうる戦略をひとつ以下の形式で出力せよ。
これは、箱 をこの順に開けることを表す。
複数の解が考えられる場合は、そのうちのどれを出力してもよい。
题目大意
题目描述
魔术师在表演,现在他有 个箱子,其中一个有宝藏。魔术师会随机打乱这些箱子,此后箱子顺序不变,你的任务是在这 个箱子中找到有宝藏的那个。
但是,在你找宝藏的过程中,会有一些特殊的限制和操作:
-
你只能一个箱子一个箱子打开,且打开一个箱子后必须在打开另外一个之前关闭它。
-
每一个箱子最多能打开 次。
-
魔术师会在你找宝藏的过程中最多做 后文所述的操作:除了在你正在打开箱子的时候,他可能会将宝藏从一个箱子移动到另外一个箱子中。也就是说,他可能会在你打开一个箱子之前、关闭一个箱子并打开下一个中间这段时间这两种情况中移动宝藏位置。
请输出一种方案,确保你能找到宝藏,如果没有这样的方案,输出 -1
。
输入格式
第一行两个正整数 和 分别表示箱子个数和魔术师能移动宝藏的次数。
第二行输入 个正整数 表示每个箱子你最多能打开的次数。
输出格式
如果没有题目描述中所述的解,输出 -1
。
否则,第一行输出一行一个正整数 表示打开箱子顺序的总长度(即你打开箱子的总次数)。
第二行输出一行 个正整数,表示你的打开箱子顺序。
2 1
5 5
7
1 1 2 1 2 2 1
3 50
5 10 15
-1
提示
制約
Sample Explanation 1
$ 1\ \rightarrow\ 1\ \rightarrow\ 2\ \rightarrow\ 1\ \rightarrow\ 2\ \rightarrow\ 2\ \rightarrow\ 1 $ の順に 回箱を開ければ、財宝の初期位置やマジシャンがどのように財宝を移動させるかによらず、必ず財宝を見つけることができます。