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 |
|
|
| 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 |