提出 #74602827


ソースコード 拡げる

import sys

def solve():
    # Read all tokens from standard input efficiently
    input_data = sys.stdin.read().split()
    if not input_data:
        return
    
    N = int(input_data[0])
    M = int(input_data[1])
    Q = int(input_data[2])
    K = int(input_data[3])
    
    events = []
    idx = 4
    
    # Read all books and register them as events of Type 2
    for _ in range(M):
        S = int(input_data[idx])
        D = int(input_data[idx+1])
        # Format: (Value/Time, Type, Shelf)
        events.append((D, 2, S))
        idx += 2
        
    # Read all queries and register them as events of Type 1
    for j in range(Q):
        L = int(input_data[idx])
        R = int(input_data[idx+1])
        T = int(input_data[idx+2])
        # Format: (Value/Time, Type, Left, Right, Original Query Index)
        events.append((T, 1, L, R, j))
        idx += 3
        
    # Sort events descendingly by value (page counts). 
    # Because 2 > 1, if values are equal, Type 2 (Add Book) events come before Type 1 (Queries).
    events.sort(reverse=True)
    
    # Binary Indexed Tree (Fenwick Tree) Initialization
    tree = [0] * (N + 1)
    
    def add(i, delta):
        while i <= N:
            tree[i] += delta
            i += i & (-i)
            
    def query(i):
        s = 0
        while i > 0:
            s += tree[i]
            i -= i & (-i)
        return s
        
    ans = [0] * Q
    
    # Process events
    for ev in events:
        if ev[1] == 2:   # Add Book Event
            S = ev[2]
            add(S, 1)
        else:            # Search Query Event
            L = ev[2]
            R = ev[3]
            qid = ev[4]
            # Calculate the current range sum of matching books
            count = query(R) - query(L - 1)
            # Subtract K and apply lower bound 0
            ans[qid] = count - K if count > K else 0
            
    # Efficiently write output
    sys.stdout.write('\n'.join(map(str, ans)) + '\n')

if __name__ == '__main__':
    solve()

提出情報

提出日時
問題 E - 図書館の蔵書検索
ユーザ evilwater
言語 Python (PyPy 3.11-v7.3.20)
得点 466
コード長 2089 Byte
結果 AC
実行時間 468 ms
メモリ 177676 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 466 / 466
結果
AC × 5
AC × 94
セット名 テストケース
Sample sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt
All sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, in65.txt, in66.txt, in67.txt, in68.txt, in69.txt, in70.txt, in71.txt, in72.txt, in73.txt, in74.txt, in75.txt, in76.txt, in77.txt, in78.txt, in79.txt, in80.txt, in81.txt, in82.txt, in83.txt, in84.txt, in85.txt, in86.txt, in87.txt, in88.txt, in89.txt
ケース名 結果 実行時間 メモリ
in01.txt AC 49 ms 79984 KiB
in02.txt AC 49 ms 80028 KiB
in03.txt AC 49 ms 80184 KiB
in04.txt AC 50 ms 79892 KiB
in05.txt AC 50 ms 79880 KiB
in06.txt AC 50 ms 79984 KiB
in07.txt AC 50 ms 80184 KiB
in08.txt AC 50 ms 79936 KiB
in09.txt AC 50 ms 79944 KiB
in10.txt AC 401 ms 177264 KiB
in11.txt AC 403 ms 177452 KiB
in12.txt AC 468 ms 177676 KiB
in13.txt AC 195 ms 152292 KiB
in14.txt AC 394 ms 176268 KiB
in15.txt AC 393 ms 177244 KiB
in16.txt AC 257 ms 173072 KiB
in17.txt AC 271 ms 170764 KiB
in18.txt AC 263 ms 173084 KiB
in19.txt AC 51 ms 80184 KiB
in20.txt AC 281 ms 172508 KiB
in21.txt AC 258 ms 171360 KiB
in22.txt AC 396 ms 176220 KiB
in23.txt AC 277 ms 173228 KiB
in24.txt AC 316 ms 176604 KiB
in25.txt AC 280 ms 173996 KiB
in26.txt AC 284 ms 173872 KiB
in27.txt AC 406 ms 176232 KiB
in28.txt AC 397 ms 177572 KiB
in29.txt AC 260 ms 172844 KiB
in30.txt AC 375 ms 173020 KiB
in31.txt AC 51 ms 79560 KiB
in32.txt AC 50 ms 80028 KiB
in33.txt AC 50 ms 79808 KiB
in34.txt AC 62 ms 93104 KiB
in35.txt AC 50 ms 79864 KiB
in36.txt AC 50 ms 80224 KiB
in37.txt AC 50 ms 79864 KiB
in38.txt AC 49 ms 79892 KiB
in39.txt AC 50 ms 80284 KiB
in40.txt AC 54 ms 86612 KiB
in41.txt AC 388 ms 177076 KiB
in42.txt AC 396 ms 177040 KiB
in43.txt AC 51 ms 79736 KiB
in44.txt AC 51 ms 79824 KiB
in45.txt AC 50 ms 79864 KiB
in46.txt AC 50 ms 79864 KiB
in47.txt AC 49 ms 79560 KiB
in48.txt AC 49 ms 79956 KiB
in49.txt AC 49 ms 80072 KiB
in50.txt AC 331 ms 173344 KiB
in51.txt AC 395 ms 176656 KiB
in52.txt AC 390 ms 176368 KiB
in53.txt AC 408 ms 175840 KiB
in54.txt AC 398 ms 177432 KiB
in55.txt AC 397 ms 177108 KiB
in56.txt AC 384 ms 175900 KiB
in57.txt AC 261 ms 176408 KiB
in58.txt AC 401 ms 177324 KiB
in59.txt AC 413 ms 176732 KiB
in60.txt AC 414 ms 177516 KiB
in61.txt AC 408 ms 177624 KiB
in62.txt AC 456 ms 177572 KiB
in63.txt AC 443 ms 177448 KiB
in64.txt AC 422 ms 177516 KiB
in65.txt AC 401 ms 175768 KiB
in66.txt AC 395 ms 177412 KiB
in67.txt AC 376 ms 175996 KiB
in68.txt AC 50 ms 79840 KiB
in69.txt AC 49 ms 80104 KiB
in70.txt AC 48 ms 79824 KiB
in71.txt AC 47 ms 79824 KiB
in72.txt AC 47 ms 80004 KiB
in73.txt AC 47 ms 79976 KiB
in74.txt AC 103 ms 151832 KiB
in75.txt AC 104 ms 151908 KiB
in76.txt AC 49 ms 79984 KiB
in77.txt AC 48 ms 79780 KiB
in78.txt AC 49 ms 79944 KiB
in79.txt AC 48 ms 80028 KiB
in80.txt AC 158 ms 171812 KiB
in81.txt AC 159 ms 171812 KiB
in82.txt AC 50 ms 79688 KiB
in83.txt AC 48 ms 79864 KiB
in84.txt AC 48 ms 79780 KiB
in85.txt AC 49 ms 79560 KiB
in86.txt AC 48 ms 79892 KiB
in87.txt AC 48 ms 79980 KiB
in88.txt AC 392 ms 176268 KiB
in89.txt AC 388 ms 175868 KiB
sample01.txt AC 51 ms 80004 KiB
sample02.txt AC 50 ms 79736 KiB
sample03.txt AC 49 ms 79736 KiB
sample04.txt AC 49 ms 79968 KiB
sample05.txt AC 48 ms 79864 KiB