結果
問題 |
No.1977 Extracting at Constant Intervals
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:50:03 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,144 bytes |
コンパイル時間 | 219 ms |
コンパイル使用メモリ | 81,920 KB |
実行使用メモリ | 95,232 KB |
最終ジャッジ日時 | 2025-06-12 20:53:49 |
合計ジャッジ時間 | 6,212 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | TLE * 2 -- * 29 |
ソースコード
import sys import math def main(): N, M, L = map(int, sys.stdin.readline().split()) A = list(map(int, sys.stdin.readline().split())) d = math.gcd(N, L) a = N // d b = L // d try: inv_a = pow(a, -1, b) except ValueError: inv_a = 1 # a and b are coprime, so this should not happen max_sum = -float('inf') for r in range(d): K_r = [] for k in range(1, N+1): if (k - r) % d == 0: K_r.append((k, (k - r) // d)) if not K_r: continue sum_for_r = -float('inf') for s in range(b): current_sum = 0 for (k, q) in K_r: x = s - q x_mod_b = x % b m0 = (x_mod_b * inv_a) % b if m0 > M - 1: cnt = 0 else: cnt = (M - 1 - m0) // b + 1 current_sum += A[k-1] * cnt if current_sum > sum_for_r: sum_for_r = current_sum if sum_for_r > max_sum: max_sum = sum_for_r print(max_sum) if __name__ == '__main__': main()