TSG LIVE! 15 プログラミングコンテスト
コンテスト日時
2025/11/23 (Su) 13:05 - 14:45

D - Concat and Permutation

Benihuki
2
s
1024
MB
100

問題文

英小文字からなる文字列の組 $p_1=(s_1,t_1),p_2=(s_2,t_2)$に対して以下の全順序を定めます.(全順序になることは示せます)

  • 順序1: $p_1\le p_2 \Leftrightarrow s_1<s_2 \vee (s_1=s_2 \wedge t_1\le t_2)$
  • 順序2: $p_1\le p_2 \Leftrightarrow cat(s_1,t_1)\le cat(s_2,t_2)$
    • ただし, $cat(s,t)$ は文字列$s$と$t$ をこの順に連結したものとする.

直感的には,順序1は文字列のペアに関する辞書順,順序2は文字列を結合したものに関する辞書順です.

整数 $N$ と$1,\cdots, N$ の順列 $(P_1, \cdots , P_N)$ が与えられます.
英小文字からなる空でない文字列の2つ組 $(s_i,t_i)\ (1 \le i \le N)$ であって,以下の条件を満たすものを構築してください.解が必ず存在することは証明できます.

  • 順序1について,$(s_i,t_i)\le (s_{i+1},t_{i+1})$
  • 順序2について,$(s_{P_i},t_{P_i})\le (s_{P_{i+1}},t_{P_{i+1}})$
  • $i \ne j \Rightarrow cat(s_i,t_i) \ne cat(s_j,t_j)$
  • $cat(s_i,t_i)$ の文字数は $500$以下

制約

  • $1 \le N \le 100$
  • $P_1, \cdots, P_N$ は $(1,\cdots, N)$ の順列
  • 入力は全て整数

入力

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

$N$
$P_1\ P_2\ \cdots \ P_N$

出力

条件を満たす文字列の組を以下の形式で $N$ 行にわたって出力せよ。

$s_1\ t_1$
$\vdots$
$s_N\ t_N$
入力例 1
6 1 2 3 4 5 6
出力例 1
al cea black jack mitsu bachi r ho so up tr ue
提出
C++23 (g++ 12.2.0)