結果
| 問題 | No.2458 Line Up Charged Balls |
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-20 20:20:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,325 bytes |
| コンパイル時間 | 199 ms |
| コンパイル使用メモリ | 82,444 KB |
| 実行使用メモリ | 123,672 KB |
| 最終ジャッジ日時 | 2025-03-20 20:21:44 |
| 合計ジャッジ時間 | 4,659 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 7 WA * 18 |
ソースコード
n = int(input())
Q = list(map(int, input().split()))
if n < 2:
print(0)
else:
max_e = Q[0] * Q[1]
dp_prev = max_e
max_pos = -float('inf')
max_pos_val = 0
min_neg = float('inf')
min_neg_val = 0
if Q[1] > 0:
max_pos = Q[1]
max_pos_val = max(dp_prev, 0)
else:
min_neg = Q[1]
min_neg_val = max(dp_prev, 0)
for i in range(2, n):
current_q = Q[i]
candidate_prev = current_q * Q[i-1]
candidate_cont = dp_prev + candidate_prev
if current_q > 0:
candidate = current_q * max_pos + max_pos_val if max_pos != -float('inf') else -float('inf')
else:
candidate = current_q * min_neg + min_neg_val if min_neg != float('inf') else -float('inf')
current_dp = max(candidate, candidate_cont, candidate_prev)
max_e = max(max_e, current_dp)
max_contrib = max(current_dp, 0)
if current_q > max_pos or (current_q == max_pos and max_contrib > max_pos_val):
max_pos = current_q
max_pos_val = max_contrib
if current_q < min_neg or (current_q == min_neg and max_contrib > min_neg_val):
min_neg = current_q
min_neg_val = max_contrib
dp_prev = current_dp
print(max_e)
lam6er