結果
問題 |
No.1618 Convolution?
|
ユーザー |
![]() |
提出日時 | 2025-03-26 15:56:26 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 223 ms / 2,000 ms |
コード長 | 1,302 bytes |
コンパイル時間 | 385 ms |
コンパイル使用メモリ | 82,968 KB |
実行使用メモリ | 160,900 KB |
最終ジャッジ日時 | 2025-03-26 15:56:57 |
合計ジャッジ時間 | 8,851 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 15 |
ソースコード
def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 A = list(map(int, input[idx:idx+N])) idx += N B = list(map(int, input[idx:idx+N])) idx += N # Precompute prefix sums for A and j*A_j (1-based) prefix_A = [0] * (N + 1) prefix_jA = [0] * (N + 1) for i in range(1, N+1): prefix_A[i] = prefix_A[i-1] + A[i-1] prefix_jA[i] = prefix_jA[i-1] + i * A[i-1] # Precompute prefix sums for B and i*B_i (1-based) prefix_B = [0] * (N + 1) prefix_iB = [0] * (N + 1) for i in range(1, N+1): prefix_B[i] = prefix_B[i-1] + B[i-1] prefix_iB[i] = prefix_iB[i-1] + i * B[i-1] C = [] for k in range(1, 2*N + 1): a = max(1, k - N) b = min(N, k - 1) if a > b: sum_A = 0 sum_jA = 0 sum_B = 0 sum_iB = 0 else: sum_A = prefix_A[b] - prefix_A[a-1] sum_jA = prefix_jA[b] - prefix_jA[a-1] sum_B = prefix_B[b] - prefix_B[a-1] sum_iB = prefix_iB[b] - prefix_iB[a-1] S1 = k * sum_A - sum_jA S2 = k * sum_B - sum_iB C.append(S1 + S2) print(' '.join(map(str, C))) if __name__ == '__main__': main()