結果
問題 |
No.771 しおり
|
ユーザー |
![]() |
提出日時 | 2022-06-21 00:27:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,517 ms / 2,000 ms |
コード長 | 626 bytes |
コンパイル時間 | 230 ms |
コンパイル使用メモリ | 82,560 KB |
実行使用メモリ | 133,340 KB |
最終ジャッジ日時 | 2024-07-22 07:31:46 |
合計ジャッジ時間 | 18,914 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 43 |
ソースコード
N = int(input()) c = [] for i in range(N): l, r = map(int, input().split()) c.append([l, r-l]) # 整列済み本の集合iを任意の順で並べて、最後尾がj dp = [[0]*N for _ in range(1<<N)] for i in range(1,1<<N): for j in range(N): if not i & (1<<j): continue for k in range(N): if j == k or i & (1<<k): continue if dp[i ^ (1<<k)][k] == 0: dp[i ^ (1<<k)][k] = max(dp[i][j], c[j][1]+c[k][0]) else: dp[i ^ (1<<k)][k] = min(dp[i ^ (1<<k)][k], max(dp[i][j], c[j][1]+c[k][0])) print(min(dp[-1]))