結果
問題 | No.437 cwwゲーム |
ユーザー |
![]() |
提出日時 | 2024-11-21 22:23:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 100 ms / 2,000 ms |
コード長 | 989 bytes |
コンパイル時間 | 215 ms |
コンパイル使用メモリ | 82,436 KB |
実行使用メモリ | 77,320 KB |
最終ジャッジ日時 | 2024-11-21 22:23:15 |
合計ジャッジ時間 | 4,141 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 41 |
ソースコード
A = tuple([int(s) for s in input()]) from functools import lru_cache @lru_cache(maxsize=1000000) def f(X): N = len(X) if N < 3: return 0 if N % 3 == 1: ret = 0 for i in range(N): Y = list(X) Y.pop(i) ret = max(ret, f(tuple(Y))) return ret if N % 3 == 2: ret = 0 for i in range(N - 1): for j in range(i + 1, N): Y = list(X) Y.pop(j) Y.pop(i) ret = max(ret, f(tuple(Y))) return ret ret = 0 Y1 = list(X) Y1.pop(0) for i in range(1, N - 1): Y2 = Y1[:] Y2.pop(i - 1) for j in range(i + 1, N): Y3 = Y2[:] Y3.pop(j - 2) tmp = 0 if X[0] != 0 and X[0] != X[i] and X[i] == X[j]: tmp += X[0] * 100 + X[i] * 10 + X[i] tmp += f(tuple(Y3)) ret = max(ret, tmp) return ret print(f(A))