結果
| 問題 | No.3265 地元に帰れば天才扱い! | 
| コンテスト | |
| ユーザー | 👑  SPD_9X2 | 
| 提出日時 | 2025-09-13 01:32:54 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                TLE
                                 
                             | 
| 実行時間 | - | 
| コード長 | 2,192 bytes | 
| コンパイル時間 | 413 ms | 
| コンパイル使用メモリ | 82,592 KB | 
| 実行使用メモリ | 133,660 KB | 
| 最終ジャッジ日時 | 2025-09-13 01:33:06 | 
| 合計ジャッジ時間 | 11,752 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | TLE * 1 -- * 20 | 
ソースコード
class RangeBIT:
    def __init__(self,N,indexed): #0-indexed or 1-indexed 指定可能
        self.bit1 = [0] * (N+2)
        self.bit2 = [0] * (N+2)
        self.mode = indexed
    def bitadd(self,a,w,bit): #aにwを加える(1-origin)
 
        x = a
        while x <= (len(bit)-1):
            bit[x] += w
            x += x & (-1 * x)
 
    def bitsum(self,a,bit): #ind 1~aまでの和を求める
 
        ret = 0
        x = a
        while x > 0:
            ret += bit[x]
            x -= x & (-1 * x)
        return ret
    
    def add(self,l,r,w): #半開区間[l,r)にwを加える
        l = l + (1-self.mode)
        r = r + (1-self.mode)
        self.bitadd(l,-1*w*l,self.bit1)
        self.bitadd(r,w*r,self.bit1)
        self.bitadd(l,w,self.bit2)
        self.bitadd(r,-1*w,self.bit2)
    def sum(self,l,r): #半開区間[l,r)の区間和
        l = l + (1-self.mode)
        r = r + (1-self.mode)
        ret =  self.bitsum(r,self.bit1) + r * self.bitsum(r,self.bit2)
        ret -= self.bitsum(l,self.bit1) + l * self.bitsum(l,self.bit2)
        return ret
import sys
N,M = map(int,input().split())
BitSum = RangeBIT(M,0)
BitLR = RangeBIT(M,0)
ApLR = []
for i in range(N):
    A,L,R = map(int,input().split())
    L -= 1
    R -= 1
    BitSum.add(i,i+1,A)
    ApLR.append( (A,i,L,R) )
    BitLR.add(L,R+1,1)
ans = 0
for i in range(N):
    A,p,L,R = ApLR[i]
    ans += (R-L+1) * A - BitSum.sum(L,R+1)
#print (ans,file=sys.stderr)
Q = int(input())
for _ in range(Q):
    i,Y,U,V = map(int,input().split())
    i -= 1
    Y -= 1
    U -= 1
    V -= 1
    # 削除
    A,p,L,R = ApLR[i]
    BitLR.add(L,R+1,-1)
    ans -= (R-L+1) * A - BitSum.sum(L,R+1)
    #print ((R-L+1) * A - BitSum.sum(L,R+1),file=sys.stderr)
    ans -= -1 * BitLR.sum(p,p+1) * A
    #print (-1 * BitLR.sum(p,p+1) * A,file=sys.stderr)
    BitSum.add(p,p+1,-A)
    # 追加
    ApLR[i] = (A,Y,U,V)
    A,p,L,R = ApLR[i]
    BitLR.add(L,R+1,1)
    ans += (R-L+1) * A - BitSum.sum(L,R+1)
    #print ((R-L+1) * A - BitSum.sum(L,R+1),file=sys.stderr)
    ans += -1 * BitLR.sum(p,p+1) * A
    #print (-1 * BitLR.sum(p,p+1) * A,file=sys.stderr)
    BitSum.add(p,p+1,A)
    print (ans)
            
            
            
        