結果

問題 No.3129 Multiple of Twin Subarray
ユーザー sasa8uyauya
提出日時 2025-04-25 21:51:20
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,743 bytes
コンパイル時間 480 ms
コンパイル使用メモリ 82,352 KB
実行使用メモリ 141,260 KB
最終ジャッジ日時 2025-04-25 21:51:30
合計ジャッジ時間 9,233 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 29 WA * 17
権限があれば一括ダウンロードができます

ソースコード

diff #

n=int(input())
a=list(map(int,input().split()))
ans=-10**20

ca=a+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=min(l,ca[i])
ql=q[:]
ca=a[::-1]+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=min(l,ca[i])
qr=q[:]
qr=qr[::-1]
qr1=qr[:]
qr2=qr[:]
for i in range(n-1):
  qr1[i]=max(qr1[i],qr1[i+1])
  qr2[i]=min(qr2[i],qr2[i+1])
for i in range(n-1):
  ans=max(ans,ql[i]*qr1[i+1],ql[i]*qr2[i+1])

ca=a+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=max(l,ca[i])
ql=q[:]
ca=a[::-1]+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=min(l,ca[i])
qr=q[:]
qr=qr[::-1]
qr1=qr[:]
qr2=qr[:]
for i in range(n-1):
  qr1[i]=max(qr1[i],qr1[i+1])
  qr2[i]=min(qr2[i],qr2[i+1])
for i in range(n-1):
  ans=max(ans,ql[i]*qr1[i+1],ql[i]*qr2[i+1])

ca=a+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=min(l,ca[i])
ql=q[:]
ca=a[::-1]+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=max(l,ca[i])
qr=q[:]
qr=qr[::-1]
qr1=qr[:]
qr2=qr[:]
for i in range(n-1):
  qr1[i]=max(qr1[i],qr1[i+1])
  qr2[i]=min(qr2[i],qr2[i+1])
for i in range(n-1):
  ans=max(ans,ql[i]*qr1[i+1],ql[i]*qr2[i+1])

ca=a+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=max(l,ca[i])
ql=q[:]
ca=a[::-1]+[0]
for i in range(n):
  ca[i]+=ca[i-1]
q=[0]*n
l=0
for i in range(n):
  q[i]=ca[i]-l
  l=max(l,ca[i])
qr=q[:]
qr=qr[::-1]
qr1=qr[:]
qr2=qr[:]
for i in range(n-1):
  qr1[i]=max(qr1[i],qr1[i+1])
  qr2[i]=min(qr2[i],qr2[i+1])
for i in range(n-1):
  ans=max(ans,ql[i]*qr1[i+1],ql[i]*qr2[i+1])

print(ans)
0