結果

問題 No.1538 引きこもりさんは引き算が得意。
ユーザー siman
提出日時 2022-09-11 09:34:10
言語 Ruby
(3.4.1)
結果
WA  
実行時間 -
コード長 493 bytes
コンパイル時間 498 ms
コンパイル使用メモリ 7,296 KB
実行使用メモリ 17,408 KB
最終ジャッジ日時 2024-11-27 17:55:06
合計ジャッジ時間 8,055 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 45 WA * 9
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

N, K = gets.split.map(&:to_i)
A = gets.split.map(&:to_i)

def dfs(i, e, sum, memo)
  if i == e
    memo[sum] = true
  else
    dfs(i + 1, e, sum - A[i], memo)
    dfs(i + 1, e, sum, memo)
    dfs(i + 1, e, sum + A[i], memo)
  end
end

memo1 = Hash.new
memo2 = Hash.new

mid = N / 2
dfs(0, mid, 0, memo1)
dfs(mid, N, 0, memo2)

if memo1[K] || memo2[K]
  puts 'Yes'
  exit
else
  memo1.each_key do |k|
    if memo2[K - k] || memo2[k - K]
      puts 'Yes'
      exit
    end
  end
end

puts 'No'
0