結果

問題 No.3444 Interval Xor MST
コンテスト
ユーザー 👑 potato167
提出日時 2025-12-28 05:27:54
言語 PyPy3
(7.3.17)
結果
AC  
実行時間 424 ms / 2,000 ms
コード長 866 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 302 ms
コンパイル使用メモリ 82,756 KB
実行使用メモリ 77,628 KB
最終ジャッジ日時 2026-02-06 20:51:12
合計ジャッジ時間 4,295 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 7
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def f(n: int) -> int:
    res = 0
    a = 1
    while n != 1:
        res += a * (n // 2)
        n -= n // 2
        a <<= 1
    return res

def h(n: int, m: int) -> int:
    if n == 1:
        return 0

    L = m
    R = m + n - 1

    d = 60
    while ((L >> d) & 1) == ((R >> d) & 1):
        d -= 1

    mask = (1 << (d + 1)) - 1
    L &= mask
    R &= mask

    l = (1 << d) - L
    r = (R + 1 - (1 << d))

    ans = f(r) + f(l)
    ans += (1 << d)

    d -= 1
    while d >= 0:
        if l + r > (2 << d):
            break
        if l > (1 << d):
            l -= (1 << d)
        elif r > (1 << d):
            r -= (1 << d)
        else:
            ans += (1 << d)
        d -= 1

    return ans

def main() -> None:
	T = int(input())
	while T:
	    T -= 1
	    N, M = map(int, input().split())
	    print(h(N, M))
if __name__ == "__main__":
    main()
0