結果
| 問題 |
No.3129 Multiple of Twin Subarray
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2025-04-26 02:48:32 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 176 ms / 2,000 ms |
| コード長 | 1,165 bytes |
| コンパイル時間 | 473 ms |
| コンパイル使用メモリ | 82,464 KB |
| 実行使用メモリ | 125,308 KB |
| 最終ジャッジ日時 | 2025-04-26 02:48:40 |
| 合計ジャッジ時間 | 7,730 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 46 |
ソースコード
import sys
input = sys.stdin.readline
N=int(input())
A=list(map(int,input().split()))
S=[0]
for a in A:
S.append(S[-1]+a)
MAX1=[-1<<60]*(N+1)
MIN1=[1<<60]*(N+1)
MAX2=[-1<<60]*N
MIN2=[1<<60]*N
for i in range(N+1):
MAX1[i]=max(MAX1[i-1],MAX1[i])
MAX1[i]=max(MAX1[i],S[i])
for i in range(N+1):
MIN1[i]=min(MIN1[i-1],MIN1[i])
MIN1[i]=min(MIN1[i],S[i])
for i in range(N):
MAX2[i]=max(MAX2[i],MAX2[i-1])
MAX2[i]=max(MAX2[i],S[i+1]-MIN1[i])
MIN2[i]=min(MIN2[i],MIN2[i-1])
MIN2[i]=min(MIN2[i],S[i+1]-MAX1[i])
B=list(reversed(A))
S2=[0]
for a in B:
S2.append(S2[-1]+a)
MAX3=[-1<<60]*(N+1)
MIN3=[1<<60]*(N+1)
MAX4=[-1<<60]*N
MIN4=[1<<60]*N
for i in range(N+1):
MAX3[i]=max(MAX3[i-1],MAX3[i])
MAX3[i]=max(MAX3[i],S2[i])
for i in range(N+1):
MIN3[i]=min(MIN3[i-1],MIN3[i])
MIN3[i]=min(MIN3[i],S2[i])
for i in range(N):
MAX4[i]=max(MAX4[i],MAX4[i-1])
MAX4[i]=max(MAX4[i],S2[i+1]-MIN3[i])
MIN4[i]=min(MIN4[i],MIN4[i-1])
MIN4[i]=min(MIN4[i],S2[i+1]-MAX3[i])
MAX4.reverse()
MIN4.reverse()
ANS=-1<<63
for i in range(N-1):
ANS=max(ANS,MAX2[i]*MAX4[i+1],MIN2[i]*MIN4[i+1])
print(ANS)
titia