Submission #47966425


Source Code Expand

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
}

Submission Info

Submission Time
Task E - Mex and Update
User ds14050
Language Ruby (ruby 3.2.2)
Score 475
Code Size 1211 Byte
Status AC
Exec Time 642 ms
Memory 58604 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 1
AC × 35
Set Name Test Cases
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
Case Name Status Exec Time Memory
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