問題一覧 > 通常問題

No.478 一般門松列列

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 220
作問者 : maimai
1 ProblemId : 1489 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2017-01-28 00:04:36

問題文

3つの要素から成る数列$v = (a_1,a_2,a_3)$が次の条件を満たす時,$v$は門松列であると言い伝えられています.

  1. $a_1,a_2,a_3$は全て異なる
  2. 3つの要素のうち$a_2$が最も大きい,あるいは最も小さい

さらに,$n$個の要素(ただし$3\le n$)から成る数列$w = (a_1,...,a_n)$が
どの連続した3つの要素を取り出しても門松列であるとき $w$は門松列列であると言います.


例えば,数列 $(2,0,1,7,0,1)$ は,左から2番目から始まる 連続した3つの要素を取り出した場合に限り 門松列を満たさないので,門松列列ではありません.

可哀想なので,この数列も門松列列と呼ぶことができるような定義を考えます.
$n$ 個の要素から成る『連続した$3$個の要素のうち門松列となるものがちょうど $n-k-2$ 個ある』数列を $一般門松列列_{n,k}$ と呼ぶことにします.

つまり,$(2,0,1,7,0,1)$ は $一般門松列列_{6,1}$ です.


自然数 $n$ と $k$ が与えられます.
$一般門松列列_{n,k}$ を満たす数列を1つ出力してください.存在しない場合は -1 を出力してください.

入力

n k

$3 \le n \le 20171$
$0 \le k \le n-2$

出力

$一般門松列列_{n,k}$を満たす数列を スペース区切り または 改行区切り で1つ出力してください.
ただし,出力する数列の要素は整数かつ$0$以上$10^9$以下の範囲内に収めてください.

最後に改行してください。


C++14によるスペシャルジャッジを使用しています.
解が複数存在するようなケースの場合,どの解を出力してもACします.

サンプル

サンプル1
入力
6 1
出力
2 0 1 7 0 1

問題文のケースです.
上に示した出力以外の$一般門松列列_{6,1}$,例えば「2 9 0 1 0 2」を出力しても正答になります.

サンプル2
入力
5 3
出力
1 2 4 8 16

全ての連続した3つの要素が門松列を満たさないような数列を出力します.

サンプル3
入力
8 0
出力
1 3 2 4 1 3 2 4

$k=0$の時,門松列列です.

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。