結果
問題 | No.1546 [Cherry 2nd Tune D] 思ったよりも易しくない |
ユーザー |
![]() |
提出日時 | 2025-03-20 20:48:32 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,508 bytes |
コンパイル時間 | 489 ms |
コンパイル使用メモリ | 82,668 KB |
実行使用メモリ | 170,220 KB |
最終ジャッジ日時 | 2025-03-20 20:48:55 |
合計ジャッジ時間 | 9,278 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 14 TLE * 1 -- * 38 |
ソースコード
MOD = 998244353 def main(): import sys input = sys.stdin.read data = input().split() N = int(data[0]) entries = [] index = 1 Ts = [] Vs = [] for _ in range(N): T = int(data[index]) V = int(data[index + 1]) % MOD Ts.append(T) Vs.append(V) index += 2 # Compute M and mod values M = sum(Ts) M_mod = M % MOD M_plus_1_mod = (M + 1) % MOD # Precompute inverses inv2 = pow(2, MOD - 2, MOD) inv6 = pow(6, MOD - 2, MOD) inv4 = pow(4, MOD - 2, MOD) ans = 0 current_cum = 0 for i in range(N): T_i = Ts[i] V_i = Vs[i] s = current_cum + 1 e = current_cum + T_i a = s b = e # Compute sum_k from a to b a1 = (a - 1) % MOD term1_b = (b % MOD) * ((b + 1) % MOD) % MOD term1 = term1_b * inv2 % MOD term2_a = a1 * (a % MOD) % MOD term2 = term2_a * inv2 % MOD sumk = (term1 - term2) % MOD # Compute sum_k^2 from a to b term1_b_k2 = ((b % MOD) * ((b + 1) % MOD) % MOD) * ((2 * b + 1) % MOD) % MOD term1_k2 = term1_b_k2 * inv6 % MOD a_minus_1 = a - 1 a_minus_1_mod = a_minus_1 % MOD a_mod = a % MOD two_a_minus_1_plus_1 = (2 * a_minus_1 + 1) % MOD term2_a_k2 = (a_minus_1_mod * a_mod % MOD) * two_a_minus_1_plus_1 % MOD term2_k2 = term2_a_k2 * inv6 % MOD sumk2 = (term1_k2 - term2_k2) % MOD # Compute sum_k^3 from a to b b_sq = pow(b, 2, MOD) b_plus_1_sq = pow(b + 1, 2, MOD) term1_k3 = (b_sq * b_plus_1_sq) % MOD term1_k3 = term1_k3 * inv4 % MOD a_minus_1_sq = pow(a_minus_1, 2, MOD) a_minus_1_plus_1_sq = pow(a_minus_1 + 1, 2, MOD) term2_k3 = (a_minus_1_sq * a_minus_1_plus_1_sq) % MOD term2_k3 = term2_k3 * inv4 % MOD sumk3 = (term1_k3 - term2_k3) % MOD # Calculate the terms term_M = (M_mod * sumk2) % MOD term_M_plus_1 = (M_plus_1_mod * sumk) % MOD total = (term_M + term_M_plus_1 - sumk3) % MOD # Apply the division by 2 (multiply by inv2) total = total * inv2 % MOD # Apply Vi contribution = (total * V_i) % MOD ans = (ans + contribution) % MOD current_cum = e print(ans % MOD) if __name__ == "__main__": main()