結果
問題 | No.3129 Multiple of Twin Subarray |
ユーザー |
|
提出日時 | 2025-05-09 21:47:15 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 951 ms / 2,000 ms |
コード長 | 885 bytes |
コンパイル時間 | 331 ms |
コンパイル使用メモリ | 12,160 KB |
実行使用メモリ | 39,680 KB |
最終ジャッジ日時 | 2025-05-09 21:47:45 |
合計ジャッジ時間 | 28,726 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
ソースコード
# -*- coding: utf-8 -*- """ Created on Fri May 9 20:34:01 2025 @author: Tekyla """ #from sys import stdin #input = lambda :stdin.readline()[:-1] N = int(input()) A = list(map(int, input().split())) L = [A[0]] for i in range(1, N): L.append(max(L[-1] + A[i], A[i])) for i in range(1, N): L[i] = max(L[i-1], L[i]) R = [A[-1]] for i in range(1, N): R.append(max(R[-1] + A[N-1-i], A[N-1-i])) for i in range(1, N): R[i] = max(R[i-1], R[i]) R = R[::-1] ans = -10**9 for i in range(N-1): ans = max(ans, L[i]*R[i+1]) # 負の場合 L = [A[0]] for i in range(1, N): L.append(min(L[-1] + A[i], A[i])) for i in range(1, N): L[i] = min(L[i-1], L[i]) R = [A[-1]] for i in range(1, N): R.append(min(R[-1] + A[N-1-i], A[N-1-i])) for i in range(1, N): R[i] = min(R[i-1], R[i]) R = R[::-1] for i in range(N-1): ans = max(ans, L[i]*R[i+1]) print(ans)