문제에서
최악의 경우가 사람이 10억명일때, 심사관 1명이 10억초에 1명 통과하는 것
=> 10억10억 = 100경 (long은 900경)
저는 1부터 100경 이하로 이분탐색시작해서 풀었습니다. (log2(100경) < 60)
어떤 풀이들에서는 times의 임의의 원소를 기준으로, 즉 한 심사관이 모든 사람을 처리하는 것을 최대로 잡고 푸는 것 같습니다. (times[0]n)
자바의 Long.MAX_VALUE처럼 큰 정수를 이분탐색의 큰값으로 시작하면 안되는 이유를 생각해보았는데,
mid시간에 몇명이 통과되었나 누적합을 구하는 부분에서 오버플로우가 발생할 수 있습니다.
left = 1, right = 900경 이면 mid = 450경인데 만약 times배열에서 원소가 작은 경우에 누적합이 갑자기 커지면서 오버플로가 나는 것 같습니다.
감사합니다. 이거 보고 수정해서 통과했네요. 최악의 경우라고 하면 모든 t=1 이고 times.size 가 2 이상일때 인데요, 그러면 각 심사관의 처리 가능 사람 수가 times.size 만큼 곱해지니까.. 저의 경우 LLONG_MAX에서 times.size 를 나눈 값을 최대값으로 잡고 풀었습니다.
최대값을 그냥 1e18로 설정하고 시작하니 다 통과되네요. 괜히 MAX 잡아서.. ㅠ_ㅠ