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

I - Distance

Darjeeling
2
s
1024
MB
100

問題文

整数 $K$ と $N$ 個の長さ $L$ の文字列 $S_i$ が与えられる。各 $i(1\le i\le N)$ について $d(S_i,S_j)\le K$ を満たす最小の $j(i<j\le N)$ が存在すればその値を求めよ。

ただし、 $d(s,t)$ は以下のように定義する。

$d(s,t)=(s$ を $t$ に一致させるのに必要な以下の操作の合計回数の最小値$)$

  • 文字列 $s$ の任意の $1$ 文字を削除する。
  • 文字列 $s$ の任意の位置に $1$ 文字挿入する。

制約

  • $N,L,K$ は整数
  • $S_i$ は英小文字からなる文字列 $(1\le i\le N)$
  • $2\le N\le 10^4$
  • $1\le L\le 10$
  • $0\le K\le 20$
  • $|S_i|=L(1\le i\le N)$

入力

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

$N\ L\ K$
$S_1$
$S_2$
$S_3$
$\ \vdots$
$S_N$

出力

$N$ 行出力せよ。
$i(1\le i\le N)$ 行目には、 $d(S_i,S_j)\le K$ を満たす最小の $j(i<j\le N)$ が存在すればその値を、存在しなければ $0$ を出力せよ。

入力例 1
4 5 4 vapor favor polar color
出力例 1
2 0 4 0

$d($"vapor"$,$"favor"$)=4$、$d($"vapor"$,$"polar"$)=4$、$d($"vapor"$,$"color"$)=6$、$d($"favor"$,$"polar"$)=6$、$d($"favor"$,$"color"$)=6$、$d($"polar"$,$"color"$)=4$なので、出力は上のようになります。

提出
C++23 (g++ 12.2.0)