結果
問題 |
No.1538 引きこもりさんは引き算が得意。
|
ユーザー |
![]() |
提出日時 | 2021-05-21 23:34:05 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 131 ms / 2,000 ms |
コード長 | 1,045 bytes |
コンパイル時間 | 447 ms |
コンパイル使用メモリ | 82,776 KB |
実行使用メモリ | 84,956 KB |
最終ジャッジ日時 | 2024-12-14 05:22:42 |
合計ジャッジ時間 | 5,628 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 54 |
ソースコード
n,k=map(int,input().split()) a=list(map(int,input().split())) if k in a: print('Yes') exit() b=[a[i] for i in range(n//2)] nb=len(b) c=[a[i] for i in range(n//2,n)] nc=len(c) s1=set() s2=set() s3=set() import itertools all=itertools.product([-1,0,1], repeat=nb) for x in all: cnt=0 for i in range(nb): cnt+=b[i]*x[i] if max(x)==1 and min(x)==-1: if cnt==k: print('Yes') exit() s1.add(cnt) elif max(x)==1: s2.add(cnt) elif min(x)==-1: s3.add(cnt) t1=set() t2=set() t3=set() import itertools all=itertools.product([-1,0,1], repeat=nc) for x in all: cnt=0 for i in range(nc): cnt+=c[i]*x[i] if max(x)==1 and min(x)==-1: if cnt==k: print('Yes') exit() t1.add(cnt) elif max(x)==1: t2.add(cnt) elif min(x)==-1: t3.add(cnt) for i in s1: if i+k in t1 or i+k in t2 or i+k in t3: print('Yes') exit() for i in s2: if i+k in t1 or i+k in t2: print('Yes') exit() for i in s3: if i+k in t1 or i+k in t3: print('Yes') exit() print('No')