結果

問題 No.2875 What is My Rank?
コンテスト
ユーザー detteiuu
提出日時 2026-06-28 20:38:52
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 189 ms / 2,000 ms
コード長 691 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 286 ms
コンパイル使用メモリ 84,736 KB
実行使用メモリ 103,808 KB
最終ジャッジ日時 2026-06-28 20:39:06
合計ジャッジ時間 7,411 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 32
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from sys import stdin
input = stdin.readline

def rangeSUM(l, r, c):
    return (l+r)*c%MOD*half%MOD
def inverse(n, d):
    return n * pow(d, -1, MOD) % MOD

MOD = 998244353
half = pow(2, -1, MOD)

N = int(input())
LR = [list(map(int, input().split())) for _ in range(N)]

ans = 1
a, b = LR[0]
for l, r in LR[1:]:
    l1, r1 = a, b
    cnt = 0
    if r <= l1: continue
    if r1 < l:
        ans += 1
        ans %= MOD
        continue
    if l1 < l:
        cnt += (l-l1)*(r-l+1)%MOD
        cnt %= MOD
        l1 = l
    d = max(r-r1, 1)
    c = r-l1
    if c:
        cnt += rangeSUM(d, c, c-d+1)
        cnt %= MOD
    ans += inverse(cnt, (r-l+1)*(b-a+1)%MOD)
    ans %= MOD

print(ans)
0