結果

問題 No.505 カードの数式2
ユーザー 👑 Kazun
提出日時 2021-03-03 03:32:42
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 38 ms / 2,000 ms
コード長 670 bytes
コンパイル時間 309 ms
コンパイル使用メモリ 82,124 KB
実行使用メモリ 53,696 KB
最終ジャッジ日時 2024-10-03 03:06:07
合計ジャッジ時間 2,311 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

def div(x,y):
    if x==0:
        return 0

    if x>0 and y>0:
        return x//y
    elif x>0 and y<0:
        x=-x
        y=-y
        return (x+y-1)//y
    elif x<0 and y>0:
        return (x+y-1)//y
    else:
        x=-x
        y=-y
        return x//y
#================================================
N=int(input())
A=list(map(int,input().split()))

inf=float("inf")
Max=[-inf]*N
Min=[inf]*N

Max[0]=Min[0]=A[0]
for i,a in enumerate(A[1:],1):
    P=[Max[i-1]+a,Max[i-1]-a,Max[i-1]*a]
    Q=[Min[i-1]+a,Min[i-1]-a,Min[i-1]*a]

    if a!=0:
        P+=[div(Max[i-1],a)]
        Q+=[div(Min[i-1],a)]


    Max[i]=max(*P,*Q)
    Min[i]=min(*P,*Q)

print(Max[-1])
0