結果
| 問題 |
No.1977 Extracting at Constant Intervals
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 2025-06-12 16:03:39 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,211 bytes |
| コンパイル時間 | 278 ms |
| コンパイル使用メモリ | 82,176 KB |
| 実行使用メモリ | 65,920 KB |
| 最終ジャッジ日時 | 2025-06-12 16:03:46 |
| 合計ジャッジ時間 | 4,087 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 = 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()
gew1fw