秋祭 | 静岡高校工学部



卬高杯


提出詳細

提出id提出時刻ユーザー名問題言語判定状況判定実行時間
1149902023-10-25 09:24:12loop0919Hpython19/19WA673

from string import ascii_letters
ascii_index = {c : i for i, c in enumerate(ascii_letters)}
N = int(input())
S = input().split()

for s in S:
    if all(c in ascii_index for c in s):
        pass
    else:
        print("-1")
        exit()

dp = [[0 for _ in range(len(ascii_letters))] for _ in range(1<<N)]

for bit in range(1<<N):
    for i, s in enumerate(S):
        if (bit >> i) & 1 == 1:
            continue
        j = ascii_index[s[0]]
        bit_next = bit | (1<<i)
        idx = ascii_index[s[-1]]
        dp[bit_next][idx] = max(dp[bit_next][idx], dp[bit][j] + len(s))

print(ascii_index)
print(max(dp[(1<<N)-1]))

sample1.txt WA 19
sample2.txt WA 31
sample3.txt WA 26
case1.txt WA 655
case2.txt WA 651
case3.txt WA 633
case4.txt WA 673
case5.txt WA 635
case6.txt WA 631
case7.txt WA 651
case8.txt WA 19
case9.txt WA 21
case10.txt WA 23
case11.txt WA 33
case12.txt WA 20
case13.txt WA 20
case14.txt WA 30
case15.txt WA 31
case16.txt WA 637
673 WA