提出 #7802047


ソースコード 拡げる

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

B, Ikr, FullBit = {}, [100001]*(1<<N), (1<<N)-1
master_key = 0
M.times{
	a, c = gets.to_i, gets.split.map(&:to_i)
	tkrbit = c.inject(0){|bit, tkr|
		bit | (1<<(tkr-1))
	}
	next if Ikr[tkrbit] < a
	master_key |= tkrbit
	Ikr[tkrbit] = a
	B[(a<<N)|tkrbit] = true
}
if master_key != FullBit
	p -1
	exit
end

Q, q, r = B.keys.sort, [], []
while lowest = Q.shift
	low_cost, low_tkrbit = lowest>>N, lowest&FullBit
	next if Ikr[low_tkrbit] < low_cost
	break if low_tkrbit == FullBit
	next unless B.key?(lowest)

	while kg = Q.shift
		cost, tkrbit = kg>>N, kg&FullBit
		next if Ikr[tkrbit] < cost
		cost, tkrbit = low_cost+cost, low_tkrbit|tkrbit
		next if tkrbit == low_tkrbit
		q << kg
		next if Ikr[tkrbit] <= cost
		Ikr[tkrbit] = cost
		r << ((cost<<N)|tkrbit)
	end

	until q.empty?
		unless r.empty?
			l, pv = q[0] < r[0] ? [q, r[0]+FullBit] : [r, q[0]+FullBit]
			Q.concat l.shift(l.bsearch_index{|_| pv <= _ }||l.size)
		else
			Q.concat q
			q.clear
		end
	end
	Q.concat r
	r.clear
end
p Ikr[FullBit]

提出情報

提出日時
問題 E - Get Everything
ユーザ ds14050
言語 Ruby (2.3.3)
得点 500
コード長 1082 Byte
結果 AC
実行時間 25 ms
メモリ 2424 KiB

コンパイルエラー

./Main.rb:16: warning: ambiguous first argument; put parentheses or a space even after `-' operator

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 3
AC × 40
セット名 テストケース
Sample 00-sample-00, 00-sample-01, 00-sample-02
All 00-sample-00, 00-sample-01, 00-sample-02, 01-handmade-03, 01-handmade-04, 01-handmade-05, 01-handmade-06, 01-handmade-07, 02-random-08, 02-random-09, 02-random-10, 02-random-11, 02-random-12, 02-random-13, 02-random-14, 02-random-15, 02-random-16, 02-random-17, 02-random-18, 02-random-19, 02-random-20, 02-random-21, 02-random-22, 02-random-23, 02-random-24, 02-random-25, 02-random-26, 02-random-27, 02-random-28, 02-random-29, 02-random-30, 02-random-31, 02-random-32, 02-random-33, 02-random-34, 02-random-35, 02-random-36, 02-random-37, 02-random-38, 02-random-39
ケース名 結果 実行時間 メモリ
00-sample-00 AC 7 ms 1788 KiB
00-sample-01 AC 7 ms 1788 KiB
00-sample-02 AC 7 ms 1788 KiB
01-handmade-03 AC 10 ms 1916 KiB
01-handmade-04 AC 12 ms 1916 KiB
01-handmade-05 AC 10 ms 1916 KiB
01-handmade-06 AC 9 ms 1912 KiB
01-handmade-07 AC 14 ms 1916 KiB
02-random-08 AC 11 ms 1916 KiB
02-random-09 AC 8 ms 1788 KiB
02-random-10 AC 13 ms 1912 KiB
02-random-11 AC 10 ms 1916 KiB
02-random-12 AC 10 ms 1912 KiB
02-random-13 AC 9 ms 1912 KiB
02-random-14 AC 12 ms 1912 KiB
02-random-15 AC 13 ms 1912 KiB
02-random-16 AC 13 ms 1912 KiB
02-random-17 AC 12 ms 1912 KiB
02-random-18 AC 13 ms 1916 KiB
02-random-19 AC 16 ms 2044 KiB
02-random-20 AC 7 ms 1788 KiB
02-random-21 AC 18 ms 2040 KiB
02-random-22 AC 12 ms 1916 KiB
02-random-23 AC 11 ms 1912 KiB
02-random-24 AC 13 ms 1916 KiB
02-random-25 AC 19 ms 2168 KiB
02-random-26 AC 11 ms 1916 KiB
02-random-27 AC 15 ms 2044 KiB
02-random-28 AC 10 ms 1912 KiB
02-random-29 AC 19 ms 2424 KiB
02-random-30 AC 19 ms 2044 KiB
02-random-31 AC 13 ms 1916 KiB
02-random-32 AC 25 ms 2172 KiB
02-random-33 AC 10 ms 1916 KiB
02-random-34 AC 12 ms 1912 KiB
02-random-35 AC 12 ms 1916 KiB
02-random-36 AC 10 ms 1788 KiB
02-random-37 AC 8 ms 1788 KiB
02-random-38 AC 10 ms 1912 KiB
02-random-39 AC 13 ms 2044 KiB