====== Marathon ====== ===== 풀이 ===== * 간단한 수식으로 확률을 계산해보자. * 내가 걸린 시간이 t일때, 시간 분포가 [ai,bi]인 i번 선수를 이길 확률은, tb_i이면 0% 이다. 그리고 a_i """Solution code for "BOJ 25280. Marathon". - Problem link: https://www.acmicpc.net/problem/25280 - Solution link: http://www.teferi.net/ps/problems/boj/25280 Tags: [binary search] """ import functools import sys from teflib import binsearch MUL = 10**6 def is_valid(x, ranges): prob = 1.0 for a, b in ranges: if x >= a: prob *= (b - x) / (b - a) if prob < 0.5: return False return True def main(): N = int(sys.stdin.readline()) # pylint: disable=unused-variable a_and_b = [ [float(x) for x in sys.stdin.readline().split()] for _ in range(N) ] ranges = [(int(a * MUL), int(b * MUL)) for a, b in a_and_b] beg, end = min(ranges) answer = binsearch.maximum_valid_integer( beg, end, functools.partial(is_valid, ranges=ranges) ) print(answer / MUL) if __name__ == '__main__': main() * Dependency: [[:ps:teflib:binsearch#maximum_valid_integer|teflib.binsearch.maximum_valid_integer]] {{tag>BOJ ps:problems:boj:골드_5}}