K가 주어졌을 때 총 시간을
f(K)=i=1∑Nmin(Ai,K)
라고 하자.
K가 증가하면 각 항 min(Ai,K)는 감소하지 않으므로 f(K)도 감소하지 않는다. 따라서 f(K)≥L을 처음 만족하는 K를 이분 탐색으로 찾을 수 있다.
탐색 구간의 오른쪽 끝은 maxAi로 두면 충분하다. 문제에서 정답의 존재가 보장되므로, 이분 탐색으로 찾은 최소의 K에서는 반드시 f(K)=L이다.
각 K에 대해 f(K)는 수열을 한 번 순회하여 O(N)에 계산할 수 있다. Ai≤1013이므로 이분 탐색 횟수는 약 44번 이하이다. 전체 시간 복잡도는 테스트 케이스 전체에 대해
O((∑N)log1013)
이고, 추가 공간 복잡도는 한 테스트 케이스당 O(N)이다.
또한 ∑Ai≤2⋅1018이므로 f(K)와 모든 관련 합은 signed 64-bit 정수인 long long 범위 안에 들어간다.
Solution written by GPT5.6