結果
| 問題 |
No.1538 引きこもりさんは引き算が得意。
|
| コンテスト | |
| ユーザー |
AEn
|
| 提出日時 | 2022-11-20 17:09:01 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 105 ms / 2,000 ms |
| コード長 | 1,144 bytes |
| コンパイル時間 | 192 ms |
| コンパイル使用メモリ | 82,016 KB |
| 実行使用メモリ | 85,672 KB |
| 最終ジャッジ日時 | 2024-09-21 16:14:42 |
| 合計ジャッジ時間 | 4,704 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 54 |
ソースコード
N, K = map(int, input().split())
A = list(map(int, input().split()))
if K in A:
exit(print('Yes'))
p, q = A[:N//2],A[N//2:]
P = [set() for _ in range(3)]
Q = [set() for _ in range(3)]
def cal(p, P):
for i in range(1,1<<len(p)):
s = []
for j in range(len(p)):
if i&(1<<j):
s.append(p[j])
for j in range(1<<len(s)):
sm = 0
cp, cn = 0,0
for k in range(len(s)):
if j&(1<<k):
cp += 1
sm += s[k]
else:
cn += 1
sm -= s[k]
if cp>=1 and cn>=1:
if sm==K:
exit(print('Yes'))
P[0].add(sm)
elif cp>=1:
P[1].add(sm)
else:
P[2].add(sm)
cal(p,P)
cal(q,Q)
for n1 in P[0]:
for i in range(3):
if K-n1 in Q[i]:
exit(print('Yes'))
for n1 in P[1]:
if (K-n1 in Q[0]) or (K-n1 in Q[2]):
exit(print('Yes'))
for n1 in P[2]:
if (K-n1 in Q[0]) or (K-n1 in Q[1]):
exit(print('Yes'))
print('No')
AEn