結果
| 問題 |
No.1538 引きこもりさんは引き算が得意。
|
| コンテスト | |
| ユーザー |
ygd.
|
| 提出日時 | 2021-06-12 22:37:52 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 229 ms / 2,000 ms |
| コード長 | 1,618 bytes |
| コンパイル時間 | 1,215 ms |
| コンパイル使用メモリ | 81,972 KB |
| 実行使用メモリ | 107,852 KB |
| 最終ジャッジ日時 | 2024-12-17 20:19:56 |
| 合計ジャッジ時間 | 6,970 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 54 |
ソースコード
from collections import defaultdict
def main():
N,K = map(int,input().split())
A = list(map(int,input().split()))
if K in A: print("Yes");exit()
s = set([])
B = A[:N//2]
C = A[N//2:]
c = [-1,0,1]
S = defaultdict(list)
for i in range(3**len(B)):
cmx = 0; cmn = 0
val = 0
for j in range(len(B)):
sig = i%(3**(j+1))
sig //= 3**j
#print(i,j,sig)
if sig == 0: #-1
val -= B[j]
cmn = min(cmn, -1)
elif sig == 2: #+1
val += B[j]
cmx = max(cmx, 1)
#print("VAL",val,cmx,cmn)
if cmx == 1 and cmn == -1 and val == K:
print("Yes");exit()
S[val].append((cmx,cmn))
#print(S)
T = defaultdict(list)
for i in range(3**len(C)):
cmx = 0; cmn = 0
val = 0
for j in range(len(C)):
sig = i%(3**(j+1))
sig //= 3**j
#print(i,j,sig)
if sig == 0: #-1
val -= C[j]
cmn = min(cmn, -1)
elif sig == 2: #+1
val += C[j]
cmx = max(cmx, 1)
#print("VAL",val,cmx,cmn)
if cmx == 1 and cmn == -1 and val == K:
print("Yes");exit()
T[val].append((cmx,cmn))
#print(T)
for x in S:
nokori = K - x
for xmx, xmn in S[x]:
for ymx,ymn in T[nokori]:
if max(xmx,ymx) == 1 and min(xmn,ymn) == -1:
print("Yes");exit()
print("No")
if __name__ == '__main__':
main()
ygd.