結果
問題 |
No.3129 Multiple of Twin Subarray
|
ユーザー |
![]() |
提出日時 | 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)