提出 #47966425


ソースコード 拡げる

class BIT
	def initialize n
		@a = [1]*(n+1) # 1-indexed internally
		1.upto(n){|i|
			j = i+(i&-i)
			@a[j] += @a[i] if j<=n
		}
	end

	def [] i
		i += 1
		s = 0
		while 0<i
			s += @a[i]
			i &= i-1
		end
		return s
	end
	def lb s
		z = @a.size-1
		i,t,b = 0,0,1<<z.bit_length
		t += @a[i|=b] if i|b<=z && t+@a[i|b]<s while 0<b >>= 1
		return i if i<z # i は1大きい内部インデックス(もしくは 0)だけど、求めた添字が s より小さい値を返す最大の添字であり、s 以上を返す最小の添字としては +1 したものを返したいから、足し引きして内部インデックスそのままの値を返す(アクセス可能な範囲(0..z-1)なら)。
	end
 
	def add i,d
		i += 1
		while i<@a.size
			@a[i] += d
			i += i&-i
		end
	end
	def inc i; add i,1 end
	def dec i; add i,-1 end
end

(N,Q),A,*Qry = $<.map{|ln| ln.split.map(&:to_i) }
X = (A|Qry.map{_2}).sort
X.pop while X[0]&&X.size<=X[-1]
Z = X.size
M = BIT.new Z
T = [0]*Z
A.each{|a|
	M.dec a if a<Z && 1==T[a] += 1
}
A.unshift nil
puts Qry.map{|i,x|
	a,A[i] = A[i],x
	M.inc a if a<Z && 0==T[a] -= 1
	M.dec x if x<Z && 1==T[x] += 1
	next M.lb(1)||Z
}

提出情報

提出日時
問題 E - Mex and Update
ユーザ ds14050
言語 Ruby (ruby 3.2.2)
得点 475
コード長 1211 Byte
結果 AC
実行時間 642 ms
メモリ 58604 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 475 / 475
結果
AC × 1
AC × 35
セット名 テストケース
Sample sample_01.txt
All hack_01.txt, hack_02.txt, hack_03.txt, hack_04.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt
ケース名 結果 実行時間 メモリ
hack_01.txt AC 642 ms 45920 KiB
hack_02.txt AC 572 ms 46464 KiB
hack_03.txt AC 608 ms 56036 KiB
hack_04.txt AC 606 ms 56236 KiB
sample_01.txt AC 44 ms 17132 KiB
test_01.txt AC 43 ms 16736 KiB
test_02.txt AC 44 ms 16996 KiB
test_03.txt AC 343 ms 40320 KiB
test_04.txt AC 350 ms 40084 KiB
test_05.txt AC 385 ms 40304 KiB
test_06.txt AC 389 ms 41928 KiB
test_07.txt AC 469 ms 57564 KiB
test_08.txt AC 371 ms 39744 KiB
test_09.txt AC 401 ms 39884 KiB
test_10.txt AC 404 ms 44772 KiB
test_11.txt AC 458 ms 58020 KiB
test_12.txt AC 532 ms 56044 KiB
test_13.txt AC 507 ms 45812 KiB
test_14.txt AC 575 ms 46140 KiB
test_15.txt AC 577 ms 45900 KiB
test_16.txt AC 638 ms 58148 KiB
test_17.txt AC 621 ms 57816 KiB
test_18.txt AC 564 ms 46832 KiB
test_19.txt AC 551 ms 46372 KiB
test_20.txt AC 611 ms 58160 KiB
test_21.txt AC 596 ms 58604 KiB
test_22.txt AC 592 ms 46116 KiB
test_23.txt AC 602 ms 46864 KiB
test_24.txt AC 599 ms 46020 KiB
test_25.txt AC 589 ms 45776 KiB
test_26.txt AC 351 ms 42208 KiB
test_27.txt AC 591 ms 44780 KiB
test_28.txt AC 555 ms 45868 KiB
test_29.txt AC 496 ms 46364 KiB
test_30.txt AC 555 ms 55564 KiB