구간 자르기

시간 제한2초메모리 제한128 MB

요약
N개의 구간이 주어질 때 [A,B] 안에 남는 부분의 총 길이가 정확히 K가 되도록 A를 최소로, 그다음 B를 최소로 하는 두 정수를 찾거나 0 0을 출력합니다.
난이도

보통10점 중 6점

유형
이분 탐색, 누적 합, 투 포인터
정답자
아직 제출이 없습니다

문제

수직선 위에 N개의 구간이 주어진다. 두 정수 A, B(A < B)를 고른 뒤, 각 구간에서 A와 B 사이에 포함되는 부분만 남기고 나머지를 잘라낸다. 이렇게 남은 부분들의 길이 합이 정확히 K가 되도록 하는 A와 B를 구하라.

입력

첫째 줄에 정수 N과 K(1 <= N <= 1,000, 1 <= K <= 1,000,000,000)가 주어진다.

둘째 줄부터 N개의 줄에는 각 구간의 왼쪽 끝점과 오른쪽 끝점의 위치가 주어진다. 모든 끝점의 위치는 0 이상 1,000,000 이하의 정수이다.

출력

조건을 만족하는 두 정수 A와 B를 공백으로 구분해 출력한다. 조건을 만족하는 쌍이 없으면 0 0을 출력한다.

가능한 쌍이 여러 개라면 A가 가장 작은 쌍을 출력한다. 그런 쌍도 여러 개라면 B가 가장 작은 쌍을 출력한다.

예제1

  1. 예제 1

    입력
    4 25
    0 10
    3 15
    0 8
    3 10
    
    예상 출력
    2 9