No.478 一般門松列列
タグ : / 解いたユーザー数 220
作問者 : mai
問題文
3つの要素から成る数列$v = (a_1,a_2,a_3)$が次の条件を満たす時,$v$は門松列であると言い伝えられています.
- $a_1,a_2,a_3$は全て異なる
- 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もしくは右上の雲マークをクリックしてアカウントを作成してください。