Submission #13413181


Source Code Expand

# Studying https://atcoder.jp/contests/abc168/tasks/abc168_f

N,M = gets.split.map(&:to_i)
縦線 = N.times.map{ gets.split.map(&:to_i) }
横線 = M.times.map{ gets.split.map(&:to_i) }

経線 = 縦線.map{|_,_,c| c }.uniq.sort
緯線 = 横線.map{|d,| d }.uniq.sort

GW = 経線.size+1 # 大外で壁になる線分の外側に1マス確保する。牛さんがそこにいる可能性もある。
GH = 緯線.size+1
HI = lambda{|横,下げ=false| # 0 番目のマス目の右側に 0 番目の縦線が配置される関係から、基本的に線分の座標は右へ、下へ切り上げられる。
	i = 経線.bsearch_index{|_| 横<=_ }||経線.size
	i1 = 下げ && 経線[i] != 横 ? 1 : 0
	next i-i1
}
VI = lambda{|縦,下げ=false|
	j = 緯線.bsearch_index{|_| 縦<=_ }||緯線.size
	j1 = 下げ && 緯線[j] != 縦 ? 1 : 0
	next j-j1
}
GI = lambda{|横,縦,下げ=false|
	next VI[縦,下げ]*GW + HI[横,下げ]
}

面積 = lambda{|gi|
	b,r = gi.divmod(GW)
	next Float::INFINITY unless (1...経線.size).include?(r) && (1...緯線.size).include?(b)
	next (経線[r]-経線[r-1]) * (緯線[b]-緯線[b-1])
}

縦線 = 縦線.inject(Array.new(経線.size){ [] }){|_,(a,b,c)|
	_[HI[c]] << [VI[a],VI[b,true]]
	next _
}
横線 = 横線.inject(Array.new(緯線.size){ [] }){|_,(d,e,f)|
	_[VI[d]] << [HI[e],HI[f,true]]
	next _
}

右? = lambda{|gi|
	b,r = gi.divmod(GW)
	next r+1 < GW && ! 縦線[r].any?{|s,e| b-1 < e && s < b }
}
左? = lambda{|gi|
	b,r = gi.divmod(GW)
	next 0 < r && ! 縦線[r-1].any?{|s,e| b-1 < e && s < b }
}
下? = lambda{|gi|
	b,r = gi.divmod(GW)
	next b+1 < GH && ! 横線[b].any?{|s,e| r-1 < e && s < r }
}
上? = lambda{|gi|
	b,r = gi.divmod(GW)
	next 0 < b && ! 横線[b-1].any?{|s,e| r-1 < e && s < r }
}

area = 0
Cow = GI[0,0]
Qd = [false]*(GW*GH)
Qd[Cow] = true;
Q = [Cow]
while at = Q.shift
	area += 面積[at]
	(puts'INF'; exit) if area.infinite?

	(Q<<at+1;  Qd[at+1]  = true) if 右?[at] && ! Qd[at+1]
	(Q<<at-1;  Qd[at-1]  = true) if 左?[at] && ! Qd[at-1]
	(Q<<at+GW; Qd[at+GW] = true) if 下?[at] && ! Qd[at+GW]
	(Q<<at-GW; Qd[at-GW] = true) if 上?[at] && ! Qd[at-GW]
end

p area

Submission Info

Submission Time
Task F - . (Single Dot)
User ds14050
Language Ruby (2.7.1)
Score 600
Code Size 2217 Byte
Status AC
Exec Time 1460 ms
Memory 22892 KiB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 96
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
Subtask1 sample_01.txt, sample_02.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_34.txt, sub1_35.txt, sub1_36.txt, sub1_37.txt, sub1_38.txt, sub1_39.txt, sub1_40.txt, sub1_41.txt, sub1_42.txt, sub1_43.txt, sub1_44.txt, sub1_45.txt, sub1_46.txt, sub1_47.txt, sub1_48.txt, sub1_49.txt, sub1_50.txt, sub1_51.txt, sub1_52.txt, sub1_53.txt, sub1_54.txt, sub1_55.txt, sub1_56.txt, sub1_57.txt, sub1_58.txt, sub1_59.txt, sub1_60.txt, sub1_61.txt, sub1_62.txt, sub1_63.txt, sub1_64.txt, sub1_65.txt, sub1_66.txt, sub1_67.txt, sub1_68.txt, sub1_69.txt, sub1_70.txt, sub1_71.txt, sub1_72.txt, sub1_73.txt, sub1_74.txt, sub1_75.txt, sub1_76.txt, sub1_77.txt, sub1_78.txt, sub1_79.txt, sub1_80.txt, sub1_81.txt, sub1_82.txt, sub1_83.txt, sub1_84.txt, sub1_85.txt, sub1_86.txt, sub1_87.txt, sub1_88.txt, sub1_89.txt, sub1_90.txt, sub1_91.txt, sub1_92.txt, sub1_93.txt, sub1_94.txt
Case Name Status Exec Time Memory
sample_01.txt AC 53 ms 14524 KiB
sample_02.txt AC 52 ms 14300 KiB
sub1_01.txt AC 59 ms 16888 KiB
sub1_02.txt AC 60 ms 15728 KiB
sub1_03.txt AC 54 ms 15308 KiB
sub1_04.txt AC 56 ms 14764 KiB
sub1_05.txt AC 66 ms 19812 KiB
sub1_06.txt AC 58 ms 15508 KiB
sub1_07.txt AC 55 ms 15640 KiB
sub1_08.txt AC 54 ms 14348 KiB
sub1_09.txt AC 57 ms 15564 KiB
sub1_10.txt AC 63 ms 20296 KiB
sub1_11.txt AC 54 ms 14472 KiB
sub1_12.txt AC 56 ms 14408 KiB
sub1_13.txt AC 54 ms 14264 KiB
sub1_14.txt AC 54 ms 14552 KiB
sub1_15.txt AC 51 ms 14312 KiB
sub1_16.txt AC 54 ms 14480 KiB
sub1_17.txt AC 66 ms 22488 KiB
sub1_18.txt AC 674 ms 22828 KiB
sub1_19.txt AC 692 ms 22548 KiB
sub1_20.txt AC 198 ms 22736 KiB
sub1_21.txt AC 136 ms 22300 KiB
sub1_22.txt AC 519 ms 22544 KiB
sub1_23.txt AC 133 ms 22812 KiB
sub1_24.txt AC 554 ms 22872 KiB
sub1_25.txt AC 186 ms 22700 KiB
sub1_26.txt AC 736 ms 22880 KiB
sub1_27.txt AC 152 ms 21844 KiB
sub1_28.txt AC 199 ms 21752 KiB
sub1_29.txt AC 97 ms 21920 KiB
sub1_30.txt AC 155 ms 22124 KiB
sub1_31.txt AC 64 ms 21388 KiB
sub1_32.txt AC 142 ms 21620 KiB
sub1_33.txt AC 186 ms 21776 KiB
sub1_34.txt AC 243 ms 22044 KiB
sub1_35.txt AC 475 ms 21760 KiB
sub1_36.txt AC 212 ms 21876 KiB
sub1_37.txt AC 711 ms 22892 KiB
sub1_38.txt AC 97 ms 15080 KiB
sub1_39.txt AC 79 ms 14720 KiB
sub1_40.txt AC 610 ms 22728 KiB
sub1_41.txt AC 105 ms 15012 KiB
sub1_42.txt AC 52 ms 14560 KiB
sub1_43.txt AC 52 ms 14384 KiB
sub1_44.txt AC 51 ms 14224 KiB
sub1_45.txt AC 54 ms 14384 KiB
sub1_46.txt AC 52 ms 14384 KiB
sub1_47.txt AC 58 ms 14752 KiB
sub1_48.txt AC 80 ms 14636 KiB
sub1_49.txt AC 55 ms 14828 KiB
sub1_50.txt AC 79 ms 14748 KiB
sub1_51.txt AC 57 ms 14584 KiB
sub1_52.txt AC 59 ms 14684 KiB
sub1_53.txt AC 59 ms 14744 KiB
sub1_54.txt AC 83 ms 14532 KiB
sub1_55.txt AC 769 ms 22820 KiB
sub1_56.txt AC 686 ms 22764 KiB
sub1_57.txt AC 153 ms 22804 KiB
sub1_58.txt AC 654 ms 22880 KiB
sub1_59.txt AC 672 ms 22580 KiB
sub1_60.txt AC 117 ms 22880 KiB
sub1_61.txt AC 284 ms 17200 KiB
sub1_62.txt AC 642 ms 22144 KiB
sub1_63.txt AC 56 ms 14364 KiB
sub1_64.txt AC 103 ms 20104 KiB
sub1_65.txt AC 69 ms 14612 KiB
sub1_66.txt AC 425 ms 19184 KiB
sub1_67.txt AC 81 ms 14784 KiB
sub1_68.txt AC 185 ms 15800 KiB
sub1_69.txt AC 95 ms 16224 KiB
sub1_70.txt AC 82 ms 16220 KiB
sub1_71.txt AC 53 ms 14372 KiB
sub1_72.txt AC 54 ms 14252 KiB
sub1_73.txt AC 54 ms 14472 KiB
sub1_74.txt AC 58 ms 17064 KiB
sub1_75.txt AC 54 ms 15120 KiB
sub1_76.txt AC 65 ms 22224 KiB
sub1_77.txt AC 61 ms 14240 KiB
sub1_78.txt AC 58 ms 14500 KiB
sub1_79.txt AC 76 ms 14520 KiB
sub1_80.txt AC 73 ms 14344 KiB
sub1_81.txt AC 75 ms 14304 KiB
sub1_82.txt AC 93 ms 14880 KiB
sub1_83.txt AC 51 ms 14504 KiB
sub1_84.txt AC 75 ms 14476 KiB
sub1_85.txt AC 94 ms 14792 KiB
sub1_86.txt AC 52 ms 14260 KiB
sub1_87.txt AC 54 ms 14516 KiB
sub1_88.txt AC 51 ms 14300 KiB
sub1_89.txt AC 1450 ms 22792 KiB
sub1_90.txt AC 1460 ms 22728 KiB
sub1_91.txt AC 1450 ms 22856 KiB
sub1_92.txt AC 1460 ms 22616 KiB
sub1_93.txt AC 1446 ms 22696 KiB
sub1_94.txt AC 55 ms 14412 KiB