結果
問題 | No.1538 引きこもりさんは引き算が得意。 |
ユーザー |
|
提出日時 | 2021-06-17 00:35:45 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 169 ms / 2,000 ms |
コード長 | 1,029 bytes |
コンパイル時間 | 2,634 ms |
コンパイル使用メモリ | 82,336 KB |
実行使用メモリ | 115,064 KB |
最終ジャッジ日時 | 2024-12-31 16:11:10 |
合計ジャッジ時間 | 6,402 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 54 |
ソースコード
import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(2*10**5+10) write = lambda x: sys.stdout.write(x+"\n") debug = lambda x: sys.stderr.write(x+"\n") writef = lambda x: print("{:.12f}".format(x)) n,K = list(map(int, input().split())) a = list(map(int, input().split())) a0 = a[:n//2] a1 = a[n//2:] l0 = {} l1 = {} def sub(a): res = {} for b in range(pow(3,len(a))): val = 0 p = m = 0 for i in range(len(a)): if b%3==0: val += a[i] p += 1 elif b%3==1: val -= a[i] m += 1 b //= 3 res.setdefault(val, set()) vv = (p>0) | (2*(m>0)) res[val].add(vv) return res l0 = sub(a0) l1 = sub(a1) for k,v in l0.items(): if K-k in l1: ss = v|l1[K-k] if 3 in ss or (1 in v and 2 in l1[K-k]) or (2 in v and 1 in l1[K-k]): print("Yes") break else: if K in a: print("Yes") else: print("No")