結果

問題 No.1538 引きこもりさんは引き算が得意。
コンテスト
ユーザー siman
提出日時 2022-09-11 09:34:10
言語 Ruby
(4.0.2)
コンパイル:
ruby -w -c _filename_
実行:
ruby _filename_
結果
WA  
実行時間 -
コード長 493 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 696 ms
コンパイル使用メモリ 8,704 KB
実行使用メモリ 19,656 KB
最終ジャッジ日時 2026-05-21 23:20:01
合計ジャッジ時間 6,370 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 45 WA * 9
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #
raw source code

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