結果
| 問題 | No.3407 Birds-of-Paradise' Christmas Live |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-11 00:23:29 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 199 ms / 2,000 ms |
| コード長 | 1,250 bytes |
| 記録 | |
| コンパイル時間 | 334 ms |
| コンパイル使用メモリ | 82,552 KB |
| 実行使用メモリ | 152,320 KB |
| 最終ジャッジ日時 | 2025-12-13 23:30:08 |
| 合計ジャッジ時間 | 5,963 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 |
ソースコード
def solve(arr):
if len(arr)==1:
return arr[0]*arr[0]
arr[1]+=arr[0]
arr[-2]+=arr[-1]
arr.pop()
arr.pop(0)
if len(arr)==1:
return arr[0]*arr[0]
#same,diff
dp=[arr[0]**2,(arr[0]+arr[1])**2]
for i in range(3,len(arr),2):
dp=[max(dp[0]+(arr[i-2]+arr[i-1])**2,dp[1]+arr[i-1]**2),max(dp[0]+(arr[i-2]+arr[i-1]+arr[i])**2,dp[1]+(arr[i-1]+arr[i])**2)]
return max(dp[0]+(arr[-1]+arr[-2])**2,dp[1]+arr[-1]**2)
n=int(input())
w=list(map(int,input().split()))
m=int(input())
s=list(map(int,input().split()))
run=[]
wp=0
sp=0
wl=0
sl=0
while wp<n and sp<m:
wr=wl+w[wp]
sr=sl+s[sp]
if min(wr,sr)-max(wl,sl)!=0:
run.append((((wp+1)%2)*2+(sp+1)%2,min(wr,sr)-max(wl,sl)))
if wr<sr:
wl=wr
wp+=1
else:
sl=sr
sp+=1
run.append((0,0))
now=[]
ans=0
bef=-1
for i in run:
if i[0]==0:
if len(now)%2==0:
now.append(0)
ans+=solve(now)
now=[]
bef=-1
elif i[0]==3:
now.append(i[1])
else:
if len(now)%2==0:
now.append(0)
if bef==i[0]:
now[-2]+=now[-1]+i[1]
now.pop()
else:
now.append(i[1])
bef=i[0]
print(ans)