Submission #23510943


Source Code Expand

N = gets.to_i

S2 = [nil]*N
Q = gets.to_i.times.map{
	gets.split.map(&:to_i).tap{|t,x,y,v|
		S2[x] = v if t<1
	}
}
D3 = S2.each_cons(2).map{|s1,s2| s1&&s2&&s2-s1 }
Sd = D3.inject([0,0]){|s,d| s<<(d ? d+s[-2] : 0) }

G,F,U = [-1]*(N+1),
lambda{|a|
	G[a]<0 ? a : G[a] = F[G[a]]
},lambda{|a,b|
	a,b = F[a],F[b]
	next if a==b
	a,b = b,a if G[b]<G[a]
	G[a] += G[b]
	G[b] = a
}

Q.each{|t,x,y,v|
	if t<1
		U[x,y]
	elsif F[x]!=F[y]
		puts'Ambiguous'
	elsif x==y
		p v
	elsif x<y
		v += Sd[x+(y-x)/2*2]-Sd[x] if x+1<y
		p(x&1==y&1 ? v : S2[y-1]-v)
	elsif y<x
		d = y+1<x ? Sd[y+(x-y)/2*2]-Sd[y] : 0
		p(x&1==y&1 ? v-d : S2[x-1]-v-d)
	end
}

Submission Info

Submission Time
Task 068 - Paired Information(★5)
User ds14050
Language Ruby (2.7.1)
Score 5
Code Size 669 Byte
Status AC
Exec Time 413 ms
Memory 31888 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 5 / 5
Status
AC × 2
AC × 13
Set Name Test Cases
Sample 00_sample_0.txt, 00_sample_1.txt
All 00_sample_0.txt, 00_sample_1.txt, 01_random_0.txt, 01_random_1.txt, 01_random_2.txt, 01_random_3.txt, 01_random_4.txt, 01_random_5.txt, 01_random_6.txt, 01_random_7.txt, 02_maxima_0.txt, 02_maxima_1.txt, 02_maxima_2.txt
Case Name Status Exec Time Memory
00_sample_0.txt AC 63 ms 14136 KiB
00_sample_1.txt AC 64 ms 14036 KiB
01_random_0.txt AC 331 ms 31340 KiB
01_random_1.txt AC 381 ms 31888 KiB
01_random_2.txt AC 355 ms 31604 KiB
01_random_3.txt AC 413 ms 30452 KiB
01_random_4.txt AC 284 ms 28276 KiB
01_random_5.txt AC 268 ms 26156 KiB
01_random_6.txt AC 277 ms 28348 KiB
01_random_7.txt AC 407 ms 30404 KiB
02_maxima_0.txt AC 317 ms 30652 KiB
02_maxima_1.txt AC 319 ms 31004 KiB
02_maxima_2.txt AC 356 ms 31428 KiB