C - Grid and Substrings Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 200

問題文

これは output-only 問題です。入力は与えられません。

すいばかくんはグリッドと部分文字列が大好きです。 あなたは英小文字が書き込まれた正方形のグリッドをすいばかくんにプレゼントしようとしています。 すいばかくんは几帳面なので、プレゼントされたグリッドに対して以下の作業を行います。

  • グリッドの一辺の長さを N とし、ij 列目に書かれた英小文字を c_{i, j} で表す。
  • 全ての i, j, p (1 \leq i, j \leq N, j+1 \leq p \leq N) に対し, c_{i, j}, c_{i, j+1}, \ldots, c_{i, p} をこの順に並べてできる文字列を紙に書き出す。
  • 全ての i, j, q (1 \leq i, j \leq N, i+1 \leq q \leq N) に対し, c_{i, j}, c_{i+1, j}, \ldots, c_{q, j} をこの順に並べてできる文字列を紙に書き出す。

以上の作業の後、紙には N^2 (N-1) 個の文字列が書かれています。 これらの文字列に重複する文字列が存在する場合、すいばかくんは悲しみ、溶けてしまいます。

あなたはすいばかくんを悲しませずにできるだけ大きなグリッドをプレゼントしたいです。 そのようなグリッドを一つ出力してください。

部分点

  • 出力したグリッドから得られる文字列に重複する文字列が存在しない場合 Accepted と判定され、グリッド一辺の長さを N として \min(200, \max(20 N - 60, 0)) 点が与えられる。
  • そうでない場合、Wrong Answer と表示され、点数は与えられない。
  • システムの都合上、AcceptedX 点を獲得した場合、それまでに提出した Accepted な解法のうち X 点 未満のものは全て誤答としてカウントされ、ペナルティが発生するので注意すること。

入力

この問題に入力は存在しない。

出力

問題文中の条件を満たすグリッドを一つ出力せよ。 1 行目にグリッドの大きさを出力せよ。続けて、グリッドの i 行目を表す文字列 s_i = c_{i,1} c_{i,2} \ldots c_{i,N}1 行ずつ出力せよ。

N
s_1
s_2
:
s_N
  • N1 以上 100 以下の整数。
  • s_i (1 \leq i \leq N) は長さ N の英小文字からなる文字列。

出力例1

2
aa
bc

このグリッドから得られる文字列 aa, ab, ac, bc はいずれも相異なるので条件を満たし Accepted と判定されるが、 獲得できる点数は 0 点である。

出力例2

4
kupc
abde
fghi
jlmn

\min(200, \max(20 \times 4 - 60, 0)) = 20 点を獲得することができる。