結果

問題 No.3265 地元に帰れば天才扱い!
ユーザー DeltaStruct
提出日時 2025-08-18 10:39:25
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
TLE  
実行時間 -
コード長 2,305 bytes
コンパイル時間 446 ms
コンパイル使用メモリ 12,800 KB
実行使用メモリ 47,064 KB
最終ジャッジ日時 2025-09-06 12:35:17
合計ジャッジ時間 6,704 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other TLE * 1 -- * 20
権限があれば一括ダウンロードができます

ソースコード

diff #

# この提出はC++からPythonにChatGPTを使って変換したものです。

def main():
    n, m = map(int, input().split())
    segtree0 = [0] * (2 * m)
    segtree1 = [0] * (2 * m)
    A = [0] * n
    L = [0] * n
    R = [0] * n
    C = [0] * n
    res = 0

    for i in range(n):
        a, l, r = map(int, input().split())
        A[i] = a
        L[i] = l - 1
        R[i] = r
        segtree1[m + i] = a
        res += (R[i] - L[i]) * a
        C[i] = i
        l += m - 1
        r += m
        while l < r:
            if l & 1:
                segtree0[l] += 1
                l += 1
            if r & 1:
                r -= 1
                segtree0[r] += 1
            l >>= 1
            r >>= 1

    for i in range(m - 1, 0, -1):
        segtree1[i] = segtree1[i << 1] + segtree1[i << 1 | 1]

    for i in range(n):
        l = m + L[i]
        r = m + R[i]
        while l < r:
            if l & 1:
                res -= segtree1[l]
                l += 1
            if r & 1:
                r -= 1
                res -= segtree1[r]
            l >>= 1
            r >>= 1

    q = int(input())
    for _ in range(q):
        x, y, u, v = map(int, input().split())
        i = x - 1
        res -= (R[i] - L[i]) * A[i]

        l = m + C[i]
        while l:
            res += segtree0[l] * A[i]
            segtree1[l] -= A[i]
            l >>= 1

        l, r = m + L[i], m + R[i]
        while l < r:
            if l & 1:
                segtree0[l] -= 1
                res += segtree1[l]
                l += 1
            if r & 1:
                r -= 1
                segtree0[r] -= 1
                res += segtree1[r]
            l >>= 1
            r >>= 1

        C[i] = y - 1
        L[i] = u - 1
        R[i] = v
        res += (R[i] - L[i]) * A[i]

        l = m + C[i]
        while l:
            res -= segtree0[l] * A[i]
            segtree1[l] += A[i]
            l >>= 1

        l, r = m + L[i], m + R[i]
        while l < r:
            if l & 1:
                segtree0[l] += 1
                res -= segtree1[l]
                l += 1
            if r & 1:
                r -= 1
                segtree0[r] += 1
                res -= segtree1[r]
            l >>= 1
            r >>= 1

        print(res)

if __name__ == "__main__":
    main()
0