結果
問題 | No.1017 Reiwa Sequence |
ユーザー |
![]() |
提出日時 | 2021-11-09 20:44:27 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 324 ms / 2,000 ms |
コード長 | 962 bytes |
コンパイル時間 | 554 ms |
コンパイル使用メモリ | 82,956 KB |
実行使用メモリ | 238,128 KB |
最終ジャッジ日時 | 2024-11-19 01:35:55 |
合計ジャッジ時間 | 37,444 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 50 |
ソースコード
N = int(input()) A = list(map(int,input().split())) M = min(22, N) def calc(): global M dp = [0] * (M * 150000) Smax = 1 dic1 = {0:(0,)} dic2 = {} flag = 1 for i in range(M): for k,v in dic1.items(): if k+A[i] in dic2: for x in v: dic2[k+A[i]] = dic2[k+A[i]] + tuple([x | 1 << i]) if len(dic2[k+A[i]]) == 2: return dic2[k+A[i]] else: for x in v: dic2[k+A[i]] = tuple([x | 1 << i]) dic1.update(dic2) return False x = calc() if x == False: print("No") else: a,b = x k = 1 for i in range(M): if (a | b) & k: if a & b & k: A[i] = 0 elif b & k: A[i] = -A[i] else: A[i] = 0 k <<= 1 if N > M: for i in range(M,N): A[i] = 0 print("Yes") print(*A)