結果

問題 No.2982 Logic Battle
ユーザー titia
提出日時 2024-12-07 01:06:30
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 193 ms / 2,000 ms
コード長 1,722 bytes
コンパイル時間 288 ms
コンパイル使用メモリ 82,304 KB
実行使用メモリ 78,028 KB
最終ジャッジ日時 2024-12-07 01:06:36
合計ジャッジ時間 6,453 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 38
権限があれば一括ダウンロードができます

ソースコード

diff #

from operator import itemgetter

N=int(input())
DP0=[(0,0)]
DP1=[(0,0)]
DP2=[(0,0)]

for i in range(N):
    #print(DP0,DP1,DP2)
    a,b,c=map(int,input().split())
    NDP0=[]
    NDP1=[]
    NDP2=[]

    for x,y in DP0:
        attack=b+x
        damage=y+attack
        attack-=1
        attack=max(attack,0)

        NDP1.append((attack,damage))

        attack=c+x
        damage=y+attack
        attack-=1
        attack=max(attack,0)

        NDP2.append((attack,damage))

    for x,y in DP1:
        attack=a+x
        damage=y+attack
        attack-=1
        attack=max(attack,0)

        NDP0.append((attack,damage))

        attack=c+x
        damage=y+attack
        attack-=1
        attack=max(attack,0)

        NDP2.append((attack,damage))

    for x,y in DP2:
        attack=a+x
        damage=y+attack
        attack-=1
        attack=max(attack,0)

        NDP0.append((attack,damage))

        attack=b+x
        damage=y+attack
        attack-=1
        attack=max(attack,0)

        NDP1.append((attack,damage))


    NDP0.sort(key=itemgetter(1),reverse=True)
    NDP0.sort(key=itemgetter(0),reverse=True)
    DP0=[]
    for x,y in NDP0:
        if DP0 and DP0[-1][1]>=y:
            continue
        DP0.append((x,y))

    NDP1.sort(key=itemgetter(1),reverse=True)
    NDP1.sort(key=itemgetter(0),reverse=True)
    DP1=[]
    for x,y in NDP1:
        if DP1 and DP1[-1][1]>=y:
            continue
        DP1.append((x,y))

    NDP2.sort(key=itemgetter(1),reverse=True)
    NDP2.sort(key=itemgetter(0),reverse=True)
    DP2=[]
    for x,y in NDP2:
        if DP2 and DP2[-1][1]>=y:
            continue
        DP2.append((x,y))
    
    
ANS=0
for x,y in DP0+DP1+DP2:
    ANS=max(ANS,y)

print(ANS)
0