結果
問題 |
No.868 ハイパー部分和問題
|
ユーザー |
![]() |
提出日時 | 2025-06-12 15:25:25 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,092 bytes |
コンパイル時間 | 171 ms |
コンパイル使用メモリ | 82,364 KB |
実行使用メモリ | 56,820 KB |
最終ジャッジ日時 | 2025-06-12 15:25:53 |
合計ジャッジ時間 | 9,662 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | -- * 2 |
other | AC * 14 TLE * 1 -- * 23 |
ソースコード
def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]) idx += 1 K = int(data[idx]) idx += 1 A = list(map(int, data[idx:idx+N])) idx += N Q = int(data[idx]) idx += 1 queries = [] for _ in range(Q): x = int(data[idx]) - 1 v = int(data[idx+1]) queries.append((x, v)) idx += 2 dp = 1 # represents sum 0 for i in range(N): a = A[i] if a <= K: dp |= dp << a for x, v in queries: old_a = A[x] if old_a <= K: new_dp = 1 for i in range(N): if i == x: continue a = A[i] if a <= K: new_dp |= new_dp << a dp = new_dp new_a = v A[x] = new_a if new_a <= K: temp_dp = dp temp_dp |= temp_dp << new_a dp = temp_dp if (dp >> K) & 1: print(1) else: print(0) if __name__ == "__main__": main()