問題一覧 > 通常問題

No.2843 Birthday Present Struggle

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / スペシャルジャッジ問題 (複数の解が存在する可能性があります)
タグ : / 解いたユーザー数 127
作問者 : 👑 AngrySadEightAngrySadEight / テスター : 👑 p-adicp-adic torisasami4torisasami4
1 ProblemId : 11113 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-08-23 16:41:13

問題文

とある町は $N$ 行 $N$ 列のマス目状の形をしており,そのうちの $1$ マスぶんのことを「区画」と呼び,$i$ 行目,$j$ 列目の区画のことを,「区画 $(i, j)$」と呼びます.

Alice,Bob,Charlie の $3$ 人が,それぞれ上下左右に互いに隣接しない異なる区画に住んでいます.Alice,Bob,Charlie の住んでいる区画は,それぞれ $(a_x, a_y)$,$(b_x, b_y)$,$(c_x, c_y)$ です.また,どの $3$ 人の住んでいる区画にも,上下左右すべてに隣接する区画が存在します

Bob は,Alice の誕生日に Alice の家に向かい,プレゼントを贈ることにしました.

どうしても Alice と仲良くなりたい Bob は,Charlie が Alice にプレゼントを贈れないよう,町のいくつかの区画にを設置し,Charlie が Alice の家に辿り着けないようにすることにしました.

具体的には,以下の条件を満たすように,壁を設置することにしました.

  • 上下左右に隣接する壁のないマスへの移動を繰り返すことにより,Bob の家から Alice の家へ到達できる.
  • 上下左右に隣接する壁のないマスへの移動を繰り返すことにより,Charlie の家から Alice の家へ到達できない.

しかし,建設費用の関係で,Bob は最大で $N$ 個までしか壁を設置することができません.また,Alice,Bob,Charlie のいずれかの家がある区画には,壁を設置できません

条件を満たす壁の設置方法をひとつ求めてください.なお,本問の制約下で条件を満たす壁の設置方法が存在することが示せます.

制約

  • 入力は全て整数である.
  • $5 \leq N \leq 1000$
  • $2 \leq a_x, a_y, b_x, b_y, c_x, c_y \leq N - 1$
  • $(a_x, a_y), (b_x, b_y), (c_x, c_y)$ はすべて異なる.
  • 区画 $(a_x, a_y), (b_x, b_y), (c_x, c_y)$ はすべて互いに上下左右に隣接しない.言い換えると,$|a_x - b_x| + |a_y - b_y| \neq 1, |a_x - c_x| + |a_y - c_y| \neq 1, |b_x - c_x| + |b_y - c_y| \neq 1$ が成り立つ.

入力

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

$N$
$a_x$ $a_y$
$b_x$ $b_y$
$c_x$ $c_y$

出力

壁の設置個数を $m$,$i$ 番目の壁を設置する区画を区画 $(x_i, y_i)$ として,以下の形式で出力せよ.ここで,$m \leq N$ を満たしており,かつ $(x_i, y_i)$ はすべて互いに異なっていなければならない.また,$(x_i, y_i)$ のいずれかが $(a_x, a_y), (b_x, b_y), (c_x, c_y)$ のいずれかに一致してもならない.

$m$
$x_1$ $y_1$
$x_2$ $y_2$
$\vdots$
$x_m$ $y_m$

サンプル

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

以下の図のように,壁を設置します.なお,赤,青,黄色の区画がそれぞれ Alice,Bob,Charlie の家のある区画を,黒の区画が壁を設置した区画を,白の区画がそれ以外の区画を表します.

このとき,Bob は Alice の家に到達できますが,Charlie は Alice の家に到達できません.

サンプル2
入力
9
4 2
6 2
5 8
出力
9
3 1
3 2
3 3
4 3
5 3
6 3
7 3
7 2
7 1

以下の図のように,壁を設置します.

なお,設置する壁の個数を最小化する必要はありません.

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