CPSCO2019 Session4
A - Swimming
l, x = gets.split.map(&:to_i) n = x / l puts n.even? ? x % l : (n + 1) * l - x
B - Meeting
n, d = gets.split.map(&:to_i) table = d.times.map do gets.chomp.chars.map.with_index {|st, i| i if st == "o"}.compact end puts table.combination(2).map {|d1, d2| (d1 + d2).uniq.size}.max
C - Make a Team
def c(a) return 1 if a == 1 a * (a - 1) / 2 end n, d = gets.split.map(&:to_i) r = gets.split.map(&:to_i).sort.push(Float::INFINITY) count = 0 (n - 2).times do |i| idx = r[i + 2..-1].bsearch_index {|r0| r0 - r[i] > d} next if !idx or idx.zero? count += c(idx + 1) end puts count
rindex を使ったら TLE だったので、bsearch_index に切り替えた。