結果
問題 |
No.961 Vibrant Fillumination
|
ユーザー |
![]() |
提出日時 | 2025-04-16 16:33:16 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,820 bytes |
コンパイル時間 | 388 ms |
コンパイル使用メモリ | 82,136 KB |
実行使用メモリ | 131,060 KB |
最終ジャッジ日時 | 2025-04-16 16:35:17 |
合計ジャッジ時間 | 33,045 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 1 |
other | AC * 4 WA * 44 |
ソースコード
class BIT1D: def __init__(self, size): self.size = size self.tree = [0] * (self.size + 2) # 1-based indexing def update(self, idx, val): while idx <= self.size: self.tree[idx] ^= val idx += idx & -idx def query(self, idx): res = 0 while idx > 0: res ^= self.tree[idx] idx -= idx & -idx return res def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 h = list(map(int, input[ptr:ptr+N])) ptr += N events = [] for _ in range(N): a = int(input[ptr]) b = int(input[ptr+1]) c = int(input[ptr+2]) d = int(input[ptr+3]) e = int(input[ptr+4]) ptr +=5 x1 = a x2 = c - 1 y1 = b y2 = d - 1 h_val = h[e-1] events.append((x1, 0, y1, y2, h_val)) events.append((x2 + 1, 0, y1, y2, h_val)) Q = int(input[ptr]) ptr +=1 queries = [] for idx in range(Q): p = int(input[ptr]) q = int(input[ptr+1]) ptr +=2 events.append((p, 1, q, idx)) events.sort(key=lambda x: (x[0], x[1])) max_y = 2 * N # Maximum possible q is 2N-1 (0-based), 1-based is 2N bit = BIT1D(max_y) ans = [0] * Q for event in events: x = event[0] typ = event[1] if typ == 0: y1 = event[2] y2 = event[3] h_val = event[4] L = y1 + 1 R = y2 + 1 bit.update(L, h_val) bit.update(R + 1, h_val) else: q_val = event[2] idx = event[3] res = bit.query(q_val + 1) ans[idx] = res for a in ans: print(a) if __name__ == "__main__": main()