結果

問題 No.1909 Detect from Substrings
ユーザー lam6er
提出日時 2025-04-15 23:50:01
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,176 bytes
コンパイル時間 259 ms
コンパイル使用メモリ 81,988 KB
実行使用メモリ 84,424 KB
最終ジャッジ日時 2025-04-15 23:52:03
合計ジャッジ時間 5,177 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 1 TLE * 1 -- * 34
権限があれば一括ダウンロードができます

ソースコード

diff #

def main():
    import sys
    input = sys.stdin.read().split()
    idx = 0
    N = int(input[idx])
    idx += 1
    M = int(input[idx])
    idx += 1
    S_list = [input[idx + i] for i in range(N)]
    idx += N

    valid_T = set()

    def is_deletion(T, s):
        i = j = 0
        skipped = 0
        len_s = len(s)
        len_T = len(T)
        if len_T - len_s != 1:
            return False
        while i < len_s and j < len_T:
            if s[i] == T[j]:
                i += 1
                j += 1
            else:
                skipped += 1
                j += 1
                if skipped > 1:
                    return False
        skipped += len_T - j
        return i == len_s and skipped == 1

    for s in S_list:
        for pos in range(M + 1):
            for c in 'abcdefghijklmnopqrstuvwxyz':
                T = s[:pos] + c + s[pos:]
                all_ok = True
                for s_j in S_list:
                    if not is_deletion(T, s_j):
                        all_ok = False
                        break
                if all_ok:
                    valid_T.add(T)

    print(len(valid_T))

if __name__ == '__main__':
    main()
0