問題一覧 > 通常問題

No.2256 Step by Step

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 7
作問者 : noya2noya2 / テスター : shobonvipshobonvip 👑 NachiaNachia
4 ProblemId : 9102 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2023-03-24 19:03:40

問題文

noya君はブロック $0,1,\dots, 9$ の $10$ 種類のブロックをそれぞれたくさん用意しました。

noya君はこれらのうちいくつかのブロックを置いたあと、後述する手順に従ってブロックを消すゲームをします。

ブロックの位置は $xyz$ 空間の座標で表されます。$x$ 軸の正方向を東向き、$z$ 軸の正方向を鉛直上向きとします。

ブロックを置く手順は次のとおりです。

  • $1\le i\le N, 1\le j\le 6$ を満たす全ての整数組 $(i,j)$ に対し、位置 $(i,0,j)$ にブロックを $1$ つ置く。
  • このとき、$j$ の昇順に、$j$ が同じ場合には $i$ の昇順にブロックを置く。
  • $N=3$ の例を示します。画面左方向が $x$ 軸の正方向(東向き)、画面上方向が $z$ 軸の正方向(鉛直上向き)です。 数字は各ブロックの種類を表しています。

    012
    345
    345
    225
    141
    300
    


    ブロックを消す手順は次のとおりです。

  • $1$. $3$ つの同じ種類のブロックの組であって、それらが上下に $3$ つ、または東西に $3$ つ並んでいる場合、 そのブロックに印をつける。同じブロックに印を重複してつけてもよい。
  • $2$. 印をつけたブロックをすべて消す。このとき消したブロックが$3$ 個より多いか $0$ 個である 場合、ゲームは失敗となり手順を終了する。
  • $3$. 置かれたブロックがなくなった場合、ゲームは成功となり、手順を終了する。
  • $4$. $z\ge 2$ を満たす位置 $(x,y,z)$ にあるブロックであって、位置 $(x,y,z-1)$ にブロックがないようなもの 全てに対して、そのブロックを $z$ 方向に $-1$ だけ移動させる(鉛直下向きに $1$ だけずらす)。 このとき移動させたブロックが存在する場合、手順 $4$ を再度行う。 そうでないとき、手順 $1$ に戻る。
  • 手順 $4$ は、鉛直下向きに重力がはたらくとして、ブロックが地面 $z=1$ または他のブロックの真上に来るまで落下させる、と思うことができます。

    先ほどのブロックを置いた例では次のようにブロックが消されていきます。

    012    01                             
    345    34     01     0                
    345    34     34     3      0         
    225    222    34     3      3         
    141    141    141    111    3         
    300    300    300    300    300    000
    
        =>     =>     =>     =>     =>     =>
    
    この例ではゲームは成功となります。

    $N$ が与えられます。ゲームが成功となるようなブロックの置き方が存在するか判定し、 存在するなら置き方の例を $1$ つ示してください。

    制約

  • 入力はすべて整数
  • $1\le N\le 1000$
  • 入力

    $N$
    

    出力

    ゲームが成功となるようなブロックの置き方が存在する場合、位置 $(i,0,j)$ に置くブロックの種類を表す数字が $S_{j,i}$ になるように長さ $N$ の文字列 $S_6,S_5,S_4,S_3,S_2,S_1$ をこの順で改行区切りで出力してください。 存在しない場合、-1 を出力してください。

    サンプル

    サンプル1
    入力
    3
    出力
    012
    345
    345
    225
    141
    300
    

    問題文で示した例のとおりです。$z$ 座標が大きい位置にある(上にある)ブロックから順に出力することに注意してください。

    サンプル2
    入力
    4
    出力
    4551
    3662
    6777
    3005
    3442
    0112
    

    次のように消されていきます。

    4551    4                                                       
    3662    3551    4  1       1       1                            
    6777    6662    3552     552       2       1                    
    3005    3005    3005     005     555       2                    
    3442    3442    3442    4442     002     002     00             
    0112    0112    0112    0112    0112    0112    0111    000     
    
         =>      =>      =>      =>      =>      =>      =>      =>
    

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