만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

구간 나누기

시간 제한1초메모리 제한1024 MB

요약
N개의 구간이 주어질 때, K번 분할한 뒤 모든 구간의 절반 이상을 덮는 가장 짧은 구간 [A, B]의 길이를 구합니다.
난이도

어려움10점 중 8점

유형
이분 탐색, 그리디, 수학
정답자
아직 제출이 없습니다

문제

수직선 위에 양의 정수 끝점을 갖는 NN개의 구간 [L1,R1],…,[LN,RN][L_1, R_1], \ldots, [L_N, R_N]이 주어진다. 나누기 연산은 구간 [L,R][L, R]을 두 구간 [L,M][L, M]과 [M,R][M, R]로 바꾼다. 이때 MM은 양의 정수이고 L<M<RL < M < R이다. 처음 주어진 구간뿐 아니라 앞선 나누기 연산으로 만들어진 구간도 나눌 수 있다.

양의 정수 A<BA < B에 대해, 구간 [A,B][A, B]가 구간 [L,R][L, R]의 길이의 절반 이상을 덮으면 [A,B][A, B]는 [L,R][L, R]을 강하게 덮는다고 한다.

주어진 NN개의 구간에 KK번의 나누기 연산을 적용해 얻은 N+KN + K개의 구간 모두를 구간 [A,B][A, B]가 강하게 덮을 때, 그러한 [A,B][A, B]의 길이의 최솟값을 구하라.

입력

첫 줄에 정수 NN과 KK가 주어진다 (1≤N≤1051 \le N \le 10^5, 0≤K≤10140 \le K \le 10^{14}). 다음 NN개 줄의 ii번째 줄에는 ii번째 구간의 왼쪽 끝점 LiL_i와 오른쪽 끝점 RiR_i가 주어진다 (1≤Li<Ri≤1091 \le L_i < R_i \le 10^9). 주어진 구간에 KK번의 나누기 연산을 적용할 수 있다고 가정해도 된다. 주어진 구간 중 일부는 서로 같을 수 있다.

출력

강하게 덮는 조건을 만족하는 구간 [A,B][A, B]의 길이의 최솟값을 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    3 3
    1 7
    3 8
    2 9
    
    예상 출력
    4
    
  2. 예제 2

    입력
    6 15
    4 10
    2 8
    7 14
    1 9
    5 12
    3 13
    
    예상 출력
    7