問題一覧 > 通常問題

No.3335 ReCT

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 15
作問者 : kencho / テスター : cn_449 みうね
ProblemId : 12741 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-11-08 01:58:39
コンテストの他の問題:

問題文

同じ大きさの正方形を辺同士で繋げてできる図形をポリオミノといいます。以下、ポリオミノを構成する正方形の一辺の長さを $1$ とします。

さて、次のように 「 $C$ 型のポリオミノ」、「 $T$ 型のポリオミノ」を定義します。

  • $C$ 型: 直線状に $3$ 個以上の正方形を繋げ、その両端から同じ方向に、それぞれ $1$ 個以上の正方形を直線状に繋げてできるポリオミノ
  • $T$ 型: $1$ 個の正方形から、ちょうど $3$ 方向に、それぞれ $1$ 個以上の正方形を直線状に繋げてできるポリオミノ
これらの定義のイメージは次のようになります。ポリオミノの向きは定義に含まれない事に注意してください。



また、$C$ 型及び $T$ 型の具体例を以下に示します。



ここで、幅 $H$ 高さ $W$ の長方形のマス目に、これらのポリオミノを以下の条件を満たすように敷き詰めることを考えます。

  • ポリオミノはマス目からはみ出してはならず、異なるポリオミノが重なってはならない
  • ポリオミノを構成する各正方形はマス目のちょうど $1$ マスを完全に覆う

以下のケースそれぞれについて、条件を満たす敷き詰めが存在すれば敷き詰めの一例を示し、存在しなければその旨を報告してください。
  • ケース $C$ : $C$ 型のポリオミノのみを用いる
  • ケース $T$ : $T$ 型のポリオミノのみを用いる
  • ケース $CT$ : $C$ 型のポリオミノと $T$ 型のポリオミノをそれぞれ $1$ 個以上用いる

制約

  • 入力は全て整数
  • $2 \leq H, W \leq 200$

入力

入力は以下の形式で標準入力から与えられる。

$H\ W$

出力

答えを以下の形式で出力してください。ただし、$output_C, output_T, output_{CT}$ はそれぞれケース $C$ 、ケース $T$ 、ケース $CT$ に対する出力を表します。

$output_C$
$output_T$
$output_{CT}$

各ケースに対し、条件を満たす敷き詰めが存在しない場合は -1 を、存在する場合は以下の形式でその一例を出力してください。

$K$
$A_{1, 1}\ A_{1, 2}\ \cdots\ A_{1, W}$
$A_{2, 1}\ A_{2, 2}\ \cdots\ A_{2, W}$
$\vdots$
$A_{H, 1}\ A_{H, 2}\ \cdots\ A_{H, W}$

$K$ は用いるポリオミノの個数であり、$A_{i, j}$ はマス目の上から $i$ 行目、左から $j$ 列目のマスを覆うポリオミノを表す $1$ 以上 $K$ 以下の整数です。
上から $i$ 行目、左から $j$ 列目のマスを $(i,\ j)$ と表すことにすると、$(i_1,\ j_1)$ と $(i_2,\ j_2)$ を覆うポリオミノが異なるとき $A_{i_1, j_1} \neq A_{i_2, j_2}$ 、同じであるとき $A_{i_1, j_1} = A_{i_2, j_2}$ が成り立つ必要があります。

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

各ケースの内容及び出力形式については、以下のサンプルも参考にしてください。

サンプル

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

出力例の内容を表す図を以下に示します。
この例では、ケース $C$ においては $C$ 型のポリオミノ $3$ 個、
ケース $T$ においては $T$ 型のポリオミノ $4$ 個、
ケース $CT$ においては $C$ 型のポリオミノ $1$ 個と $T$ 型のポリオミノ $2$ 個の合計 $3$ 個のポリオミノを用いて敷き詰めを行っています。

サンプル2
入力
2 2
出力
-1
-1
-1

与えられた長方形が小さすぎるため、$C$ 型、$T$ 型ともに $1$ つも置くことができません。

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