結果

問題 No.3397 Max Weighted Floor of Linear
コンテスト
ユーザー 👑 Mizar
提出日時 2025-11-28 23:09:05
言語 Ruby
(4.0.0)
結果
TLE  
実行時間 -
コード長 958 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 704 ms
コンパイル使用メモリ 8,232 KB
実行使用メモリ 13,056 KB
最終ジャッジ日時 2025-12-03 23:36:13
合計ジャッジ時間 14,960 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 16 TLE * 7
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #
raw source code

#!/usr/bin/env ruby

def mwf(l, r, m, a, b, c, d)
    n = r - l
    qc0, rc0 = c.divmod(m)
    c = rc0
    a += b * qc0
    qd0, rd0 = d.divmod(m)
    d = rd0
    sum_acc = a * l + b * qd0
    max_acc = sum_acc
    loop do
        n -= 1
        y_max = (c * n + d) / m
        max_acc = [max_acc, sum_acc].max
        t = sum_acc + a * n + b * y_max
        max_acc = [max_acc, t].max
        if (a <= 0 && b <= 0) || (a >= 0 && b >= 0) || y_max == 0
            return max_acc
        end
        if a < 0
            sum_acc += a + b
        end
        n = y_max
        d = m - d - 1
        m, c, a, b = c, m, b, a
        qc, c = c.divmod(m)
        a += b * qc
        qd, d = d.divmod(m)
        sum_acc += b * qd
    end
end


def solve
    t = STDIN.readline.to_i
    t.times do
        n, m, a, b, c, d = STDIN.readline.split.map(&:to_i)
        result = mwf(0, n, m, a, b, c, d)
        puts result
    end
end


if __FILE__ == $0
    solve
end
0