F - Box in Box Editorial by kyopro_friends


公式解説では次の通り述べられています

本問では \(h_i\) が相異なるとは限らないため、このままだと \(h_i=h_j, w_i\lt w_j, d_i \lt d_j\) の場合に誤判定を起こしてしまいます。そこで、\((h_i,w_i,d_i)\) の組を \(h_i\) について昇順に、\(h_i\) が等しい場合は \(w_i\) について 降順 になるようにソートをすることで誤判定を防ぐことが出来、実質的に \(h_i\) が相異なる場合と同様に本問を解くことが出来ます。

この部分は単に、prodとsetを別々にやることで解決できます。

本質部分の実装例(python)

d=defaultdict(list)
for x,y,z in hako_list:
	d[x].append((y,z))
for x,yz_list in sorted(d.items()):
	for y,z in yz_list :
		if seg.prod(0,y)<z:
			print("Yes")
			exit()
	for y,z in yz_list :
		if z<seg.get(y):
			seg.set(y,z)

posted:
last update: