結果
| 問題 | No.505 カードの数式2 | 
| コンテスト | |
| ユーザー |  | 
| 提出日時 | 2022-02-12 10:34:22 | 
| 言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 33 ms / 2,000 ms | 
| コード長 | 690 bytes | 
| コンパイル時間 | 278 ms | 
| コンパイル使用メモリ | 12,288 KB | 
| 実行使用メモリ | 10,752 KB | 
| 最終ジャッジ日時 | 2024-06-28 12:27:29 | 
| 合計ジャッジ時間 | 2,029 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge1 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 29 | 
ソースコード
N = int(input())
A = map(int, input().split())
A0 = next(A)
dp_min = dp_max = A0
ceil = lambda a, b: (a + b - 1) // b
def div_inf(x, a, inf):
    if a:
        return ceil(x, a) if x * a < 0 else x // a
    else:
        return inf
INF = 10 ** 18
for a in A:
    dp_min, dp_max = (
        min(
            dp_min + a, dp_max + a,
            dp_min - a, dp_max - a,
            dp_min * a, dp_max * a,
            div_inf(dp_min, a, INF), div_inf(dp_max, a, INF)
        ),
        max(
            dp_min + a, dp_max + a,
            dp_min - a, dp_max - a,
            dp_min * a, dp_max * a,
            div_inf(dp_min, a, -INF), div_inf(dp_max, a, -INF)
        ))
print(dp_max)
            
            
            
        