結果
問題 |
No.1017 Reiwa Sequence
|
ユーザー |
![]() |
提出日時 | 2021-05-18 15:02:37 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,021 bytes |
コンパイル時間 | 1,419 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 303,764 KB |
最終ジャッジ日時 | 2024-10-08 15:05:14 |
合計ジャッジ時間 | 16,078 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 41 TLE * 9 |
ソースコード
N = int(input()) A = list(map(int,input().split())) num = min(N, 22) from collections import defaultdict dic = defaultdict(list) for i in range(1,1<<num): temp = 0 for j in range(num): if (i>>j)&1 == 1: temp += A[j] dic[temp].append(i) #print(dic) def overlap(p,q): for i in range(30): if (p>>i)&1 == 1 and (q>>i)&1 == 1: return False return True ret = [0]*N for x in dic.keys(): if len(dic[x]) <= 1: continue n = len(dic[x]) for i in range(n): a = dic[x][i] for j in range(i+1,n): b = dic[x][j] if not overlap(a,b): continue for s in range(30): if (a>>s)&1 == 1: ret[s] = A[s] if (b>>s)&1 == 1: ret[s] = -A[s] Flag = 0 if (a>>s)&1 == 1 and (b>>s)&1 == 1: Flag = 1 assert Flag == 0 print("Yes") print(*ret); exit() print("No")