結果
問題 |
No.1977 Extracting at Constant Intervals
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:58:26 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,211 bytes |
コンパイル時間 | 167 ms |
コンパイル使用メモリ | 82,524 KB |
実行使用メモリ | 67,116 KB |
最終ジャッジ日時 | 2025-06-12 21:02:02 |
合計ジャッジ時間 | 4,154 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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 = N % L g = math.gcd(d, L) m = L // g inv_d = None if d != 0: try: inv_d = pow(d // g, -1, m) except ValueError: pass S = [0] * L for r in range(N): a = (r + 1) % L for i in range(L): c = (i - a) % L if c % g != 0: continue if d == 0: if a == i: cnt = M else: cnt = 0 else: c_prime = c // g m_prime = m d_prime = d // g inv = inv_d k0 = (c_prime * inv) % m_prime if k0 >= M: cnt = 0 else: t_max = (M - 1 - k0) // m_prime if t_max < 0: cnt = 1 if k0 <= M - 1 else 0 else: cnt = t_max + 1 S[i] += A[r] * cnt max_c = max(S) print(max_c) if __name__ == "__main__": main()