結果

問題 No.1977 Extracting at Constant Intervals
ユーザー gew1fw
提出日時 2025-06-12 15:52:10
言語 PyPy3
(7.3.15)
結果
TLE  
実行時間 -
コード長 1,144 bytes
コンパイル時間 171 ms
コンパイル使用メモリ 82,524 KB
実行使用メモリ 97,272 KB
最終ジャッジ日時 2025-06-12 15:52:20
合計ジャッジ時間 6,860 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other TLE * 2 -- * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

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()
0