$N (1 \leq N \leq 100,100)$개의 노래가 주어진다. 각 노래는 재생시간 $D(1 \leq D \leq 1000)$와 다운로드 시간 $V (1 \leq V \leq 1000)$가 주어진다 .
각 노래는 순서대로 들어야 하고, 이전 노래가 다운로드 완료되어야 다음노래를 다운로드 할 수 있다.
이때, 끊김없이 다운로드가 되어있는 노래를 듣기 위해서는, 처음 다운로드를 시작한지 몇 초 후에 노래를 듣기 시작해야하는지 구하시오.
모든 노래를 들을 수 있는 최소 대기 시간을 $T = t$라 하자. 이 때, $T = x \ (t \leq x)$에 대해 $x$시간 대기 한 후에도 모든 노래를 들을 수 있다. 따라서 단조성이 보장된다. 매개 변수 탐색과 시뮬레이션을 이용하자. 시간복잡도는 $\mathcal O(NlogT)$이다. $T =$ 시작시간으로 가능한 최대시간 $\approx NV$
import sys
input = sys.stdin.readline
def check(x):
now = x
flg = 1
for i in range(n):
now -= song[i][1]
if now < 0: flg = 0
now += song[i][0]
return flg
n = int(input())
song = [list(map(int, input().split())) for _ in range(n)]
left = 0
right = int(1e9)
while left + 1 < right:
mid = (left + right)//2
if check(mid): right = mid
else: left = mid
print(right)