구간 덮기

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

요약
최대 100만 개의 선분 중 최대 3개로 [S, E]를 덮되 선택한 선분 쌍들의 겹치는 길이 합을 최소로 만들고, 불가능하면 -1을 출력한다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 구간, 구현
정답자
아직 제출이 없습니다

문제

1차원 평면에 NN개의 선분이 존재한다. 1차원 평면상의 x=Sx = S부터 x=Ex = E까지의 구간을 주어진 선분을 최대 3개 사용하여 모두 덮으려 한다.

시작점이 x=lx=l이고 끝점이 x=rx=r인 선분이 점 xx를 덮는다는 것은 l≤x≤rl \leq x \leq r을 의미하고, 선분 집합 LL이 x=Sx=S부터 x=Ex=E까지를 덮을 수 있다는 것은 S≤x≤ES \leq x \leq E인 모든 실수 xx에 대해 xx를 덮는 선분이 LL에 적어도 하나 이상 존재함을 의미한다.

이때, 구간을 덮는 방법에 따라 '오차'라는 값을 정의하자.

'오차'는 사용한 선분 중 서로 다른 2개를 골랐을 때 겹치는 구간의 길이의 합이다. 만약 선분 하나로 x=Sx = S부터 x=Ex = E까지 모두 덮을 수 있다면 이 방법의 오차는 0이다.

'오차'를 최소화하면서 x=Sx = S부터 x=Ex = E까지 최대 3개의 선분을 사용하여 덮어보고, '오차'의 최솟값을 출력하자.

입력

첫 번째 줄에 선분의 개수 NN, 시작점 SS와 끝점 EE가 공백으로 구분되어 주어진다.

이후 NN줄에 걸쳐 그중 i(1≤i≤N)i (1 \leq i \leq N)번째 줄에 ii번째 선분의 시작점 s_is\_i와 끝점 e_ie\_i가 공백으로 구분되어 주어진다.

출력

첫째 줄에 가능한 오차의 최솟값을 출력한다.

만약 어떻게 하더라도 x=Sx=S부터 x=Ex=E까지 덮을 수 없다면 −1-1을 출력한다.

제한

  • 1≤N≤1,000,0001 \leq N \leq 1,000,000
  • 1≤s_i<e_i≤1091 \leq s\_i < e\_i \leq 10^9
  • 1≤S<E≤1091 \leq S < E \leq 10^9
  • 문제에서 주어지는 모든 수는 정수이다.

예제2

  1. 예제 1

    입력
    3 1 10
    1 7
    2 10
    3 6
    
    예상 출력
    5
    
  2. 예제 2

    입력
    5 14 46
    1 16
    32 45
    39 48
    42 47
    36 46
    
    예상 출력
    -1