結果
| 問題 |
No.1045 直方体大学
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2025-07-08 03:33:37 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 1,677 ms / 2,000 ms |
| コード長 | 1,302 bytes |
| コンパイル時間 | 399 ms |
| コンパイル使用メモリ | 82,204 KB |
| 実行使用メモリ | 181,312 KB |
| 最終ジャッジ日時 | 2025-07-08 03:33:47 |
| 合計ジャッジ時間 | 7,447 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 17 |
ソースコード
import sys
input = sys.stdin.readline
N=int(input())
A=[]
for i in range(N):
L=list(map(int,input().split()))
L.sort()
A.append(L)
DP=[[[-1<<30]*3 for i in range(N)] for j in range(1<<N)]
for i in range(N):
a,b,c=A[i]
DP[1<<i][i][0]=c
DP[1<<i][i][1]=b
DP[1<<i][i][2]=a
ANS=0
for i in range(1<<N):
for j in range(N):
for cc in range(3):
now=DP[i][j][cc]
if now<0:
continue
ANS=max(ANS,now)
a,b,c=A[j]
if cc==0:
x,y=a,b
if cc==1:
x,y=a,c
if cc==2:
x,y=b,c
for to in range(N):
if i & (1<<to) !=0:
continue
for cc2 in range(3):
a2,b2,c2=A[to]
if cc2==0:
x2,y2=a2,b2
z2=c2
if cc2==1:
x2,y2=a2,c2
z2=b2
if cc2==2:
x2,y2=b2,c2
z2=a2
if x>=x2 and y>=y2:
DP[i|(1<<to)][to][cc2]=max(DP[i|(1<<to)][to][cc2],now+z2)
print(ANS)
titia