結果
問題 | No.1017 Reiwa Sequence |
ユーザー |
![]() |
提出日時 | 2021-09-20 19:33:53 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 615 ms / 2,000 ms |
コード長 | 755 bytes |
コンパイル時間 | 350 ms |
コンパイル使用メモリ | 82,224 KB |
実行使用メモリ | 178,052 KB |
最終ジャッジ日時 | 2024-07-02 18:05:22 |
合計ジャッジ時間 | 48,128 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 50 |
ソースコード
from collections import defaultdict def search(N, A): N = min(20, N) dp = [0] * (1 << N) for S in range(1, 1 << N): for i in range(N): if (S >> i) & 1: dp[S] += A[i] memo = defaultdict(list) for S in range(1, 1 << N): if not memo[dp[S]]: memo[dp[S]].append(S) continue for T in memo[dp[S]]: if S & T == 0: return S, T memo[dp[S]].append(S) return -1, -1 N = int(input()) A = list(map(int, input().split())) S, T = search(N, A) if S == -1: print("No") exit() ans = [0] * N for i in range(20): if (S >> i) & 1: ans[i] = A[i] if (T >> i) & 1: ans[i] = -A[i] print("Yes") print(*ans)