結果

問題 No.1538 引きこもりさんは引き算が得意。
ユーザー tomerun
提出日時 2021-06-06 19:26:12
言語 Crystal
(1.14.0)
結果
AC  
実行時間 17 ms / 2,000 ms
コード長 1,745 bytes
コンパイル時間 15,082 ms
コンパイル使用メモリ 295,508 KB
実行使用メモリ 7,296 KB
最終ジャッジ日時 2024-12-14 05:34:02
合計ジャッジ時間 17,290 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 54
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

n, k32 = read_line.split.map(&.to_i)
k = k32.to_i64
a = read_line.split.map(&.to_i64)
solve(n, k, a)
def solve(n, k, a)
if a.includes?(k)
puts "Yes"
exit
end
pre = a[0...(n // 2)]
suf = a[(n // 2)..]
po1, no1, mix1 = comb(pre)
po2, no2, mix2 = comb(suf)
if mix1.includes?(k) || mix2.includes?(k)
puts "Yes"
exit
end
po1.each do |s|
if no2.includes?(k - s) || mix2.includes?(k - s)
puts "Yes"
exit
end
end
no1.each do |s|
if po2.includes?(k - s) || mix2.includes?(k - s)
puts "Yes"
exit
end
end
mix1.each do |s|
if po2.includes?(k - s) || no2.includes?(k - s) || mix2.includes?(k - s)
puts "Yes"
exit
end
end
puts "No"
end
def comb(a)
po = Set(Int64).new
no = Set(Int64).new
mix = Set(Int64).new
a.size.times do |i|
dfs_po(a, i + 1, a[i], po, no, mix)
dfs_no(a, i + 1, -a[i], po, no, mix)
end
return po, no, mix
end
def dfs_po(a, i, sum, set_po, set_no, set_mix)
if i == a.size
set_po << sum
return
end
dfs_po(a, i + 1, sum, set_po, set_no, set_mix)
dfs_po(a, i + 1, sum + a[i], set_po, set_no, set_mix)
dfs_mix(a, i + 1, sum - a[i], set_po, set_no, set_mix)
end
def dfs_no(a, i, sum, set_po, set_no, set_mix)
if i == a.size
set_no << sum
return
end
dfs_no(a, i + 1, sum, set_po, set_no, set_mix)
dfs_mix(a, i + 1, sum + a[i], set_po, set_no, set_mix)
dfs_no(a, i + 1, sum - a[i], set_po, set_no, set_mix)
end
def dfs_mix(a, i, sum, set_po, set_no, set_mix)
if i == a.size
set_mix << sum
return
end
dfs_mix(a, i + 1, sum, set_po, set_no, set_mix)
dfs_mix(a, i + 1, sum + a[i], set_po, set_no, set_mix)
dfs_mix(a, i + 1, sum - a[i], set_po, set_no, set_mix)
end
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0