Submission #38082557


Source Code Expand

class ST
	def initialize a
		@l = (1<<(a.size-1).bit_length)-1
		@t = [[a[-1],a[-1],true]]*@l+a.map{|v| [v,v,true] }
		((@l+a.size-2)/2).downto(0){|i|
			(m1,x1,b1),(m2,x2,b2) = @t[i+i+1,2]
			@t[i] = [[m1,m2].min,[x1,x2].max,x1<=m2&&b1&&b2]
		}
		@t<<[a[-1],a[-1],true]
	end

	def inspect
		i,z,*a = 0,1
		while i<@t.size
			a<<@t[i,z].inspect
			i,z = i+z,z+z
		end
		return a*"\n"
	end
	def [] l,r
		return if r<l
		return @t[l+@l] if l==r
		lm,lx,lb = @t[l+=@l]
		rm,rx,rb = @t[r+=@l]
		l1,r1 = (l-1)/2,(r-1)/2
		while l1<r1
			if 0<l&1
				m1,x1,b1 = @t[l+1]
				lm,lx,lb = [lm,m1].min,[lx,x1].max,lx<=m1&&lb&&b1
			end
			if r&1<1
				m1,x1,b1 = @t[r-1]
				rm,rx,rb = [rm,m1].min,[rx,x1].max,x1<=rm&&rb&&b1
			end
			l,r,l1,r1 = l1,r1,(l1-1)/2,(r1-1)/2
		end
		return [lm,rm].min,[lx,rx].max,lx<=rm&&lb&&rb
	end

	def []= i,v
		i += @l
		@t[i] = [v,v,true]
		while 0<=i=(i-1)/2
			(m1,x1,b1),(m2,x2,b2) = @t[i+i+1,2]
			@t[i] = [[m1,m2].min,[x1,x2].max,x1<=m2&&b1&&b2]
		end
		return v
	end
end

N = gets.to_i
S = gets.chomp
R = ST.new S.chars
A = []
gets.to_i.times{
	q,a1,a2 = gets.split
	case q.to_i
	when 1
		x,c = a1.to_i-1,a2
		R[x] = c
#		S[x] = c
#warn S
	when 2
		l,r = a1.to_i-1,a2.to_i-1
#warn '"%s[%s]%s" %s'%[S[0...l],S[l..r],S[r+1..],R[l,r].inspect]
		A<<(R[l,r][2]?'Yes':'No')
	when 3
#warn R.inspect
	end
}
puts A

Submission Info

Submission Time
Task F - Substring of Sorted String
User ds14050
Language Ruby (2.7.1)
Score 0
Code Size 1408 Byte
Status RE
Exec Time 751 ms
Memory 45932 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 500
Status
AC × 1
AC × 15
WA × 8
RE × 1
Set Name Test Cases
Sample sample_01.txt
All hand.txt, min.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, random_07.txt, random_08.txt, random_09.txt, random_10.txt, random_11.txt, random_12.txt, random_13.txt, random_14.txt, random_15.txt, random_16.txt, random_17.txt, random_18.txt, random_19.txt, random_20.txt, random_21.txt, sample_01.txt
Case Name Status Exec Time Memory
hand.txt RE 56 ms 14096 KiB
min.txt AC 62 ms 14224 KiB
random_01.txt AC 688 ms 45500 KiB
random_02.txt AC 695 ms 45380 KiB
random_03.txt AC 719 ms 40644 KiB
random_04.txt AC 733 ms 43532 KiB
random_05.txt AC 712 ms 36580 KiB
random_06.txt AC 722 ms 36772 KiB
random_07.txt WA 702 ms 45932 KiB
random_08.txt WA 687 ms 45748 KiB
random_09.txt WA 689 ms 37208 KiB
random_10.txt WA 700 ms 37036 KiB
random_11.txt WA 692 ms 37100 KiB
random_12.txt WA 696 ms 36580 KiB
random_13.txt WA 533 ms 45044 KiB
random_14.txt AC 549 ms 45156 KiB
random_15.txt WA 751 ms 44108 KiB
random_16.txt AC 720 ms 44088 KiB
random_17.txt AC 725 ms 45088 KiB
random_18.txt AC 725 ms 45004 KiB
random_19.txt AC 725 ms 43740 KiB
random_20.txt AC 731 ms 44084 KiB
random_21.txt AC 721 ms 45916 KiB
sample_01.txt AC 55 ms 14336 KiB