結果
問題 |
No.868 ハイパー部分和問題
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:47:13 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,016 bytes |
コンパイル時間 | 265 ms |
コンパイル使用メモリ | 82,140 KB |
実行使用メモリ | 83,072 KB |
最終ジャッジ日時 | 2025-06-12 20:48:42 |
合計ジャッジ時間 | 30,019 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 2 |
other | AC * 29 TLE * 1 -- * 8 |
ソースコード
def main(): import sys input = sys.stdin.read().split() ptr = 0 N, K = int(input[ptr]), int(input[ptr+1]) ptr +=2 A = list(map(int, input[ptr:ptr+N])) ptr +=N Q = int(input[ptr]) ptr +=1 operations = [] for _ in range(Q): x, v = int(input[ptr])-1, int(input[ptr+1]) operations.append((x, v)) ptr +=2 B = [a for a in A if a <= K] def can_reach_k(): mask = 1 max_bit = K + 1 for a in B: mask |= mask << a mask &= (1 << max_bit) - 1 # 保留到K+1位 if (mask >> K) & 1: return True return False for x, v in operations: old = A[x] A[x] = v if v <= K: if old > K: B.append(v) else: B.append(v) B.remove(old) else: if old <= K: B.remove(old) print(1 if can_reach_k() else 0) if __name__ == "__main__": main()