아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

홍준이의 교집합

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

요약
주어진 선분들 중 k개를 고르는 모든 경우에 대해 교집합의 길이를 합한 값을 10^9+7로 나눈 나머지를 구한다.
난이도

어려움10점 중 8점

유형
정렬, 조합론, 누적 합
정답자
아직 제출이 없습니다

문제

수평선 위에 NN개의 1차원 구간이 있다. ii번째 구간을 [Li,Ri][L_i, R_i] (Li≤RiL_i \le R_i)라고 하자. 구간의 길이는 f([Li,Ri])=Ri−Li+1f([L_i, R_i]) = R_i - L_i + 1로 정의하고, 공집합의 길이는 f(∅)=0f(\varnothing) = 0이다.

NN 이하의 양의 정수 kk가 주어진다. 서로 다른 kk개의 구간을 고르는 모든 방법에 대해 고른 구간의 교집합의 길이를 더한 값

∑1≤i1<i2<⋯<ik≤Nf([Li1,Ri1]∩[Li2,Ri2]∩⋯∩[Lik,Rik])\sum_{1 \le i_1 < i_2 < \cdots < i_k \le N} f\bigl([L_{i_1}, R_{i_1}] \cap [L_{i_2}, R_{i_2}] \cap \cdots \cap [L_{i_k}, R_{i_k}]\bigr)

을 구하는 프로그램을 작성하시오.

답이 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫째 줄에 NN과 kk가 주어진다. (1≤k≤N≤200,0001 \le k \le N \le 200{,}000)

다음 NN개의 줄 중 ii번째 줄에는 ii번째 구간을 나타내는 두 정수 LiL_i와 RiR_i가 주어진다. (−109≤Li≤Ri≤109-10^9 \le L_i \le R_i \le 10^9)

출력

서로 다른 kk개의 구간을 고르는 모든 방법에 대한 교집합의 길이의 합을 109+710^9 + 7로 나눈 나머지를 한 줄에 출력한다.

힌트

구간이 [1,2][1, 2], [1,3][1, 3], [2,3][2, 3]이고 k=2k = 2이면 고르는 방법이 세 가지이고, 각각의 교집합의 길이는 다음과 같다.

f([1,2]∩[1,3])=f([1,2])=2f([1,2] \cap [1,3]) = f([1,2]) = 2

f([1,2]∩[2,3])=f([2,2])=1f([1,2] \cap [2,3]) = f([2,2]) = 1

f([1,3]∩[2,3])=f([2,3])=2f([1,3] \cap [2,3]) = f([2,3]) = 2

따라서 답은 2+1+2=52 + 1 + 2 = 5이다.

예제3

  1. 예제 1

    입력
    3 2
    1 2
    1 3
    2 3
    
    예상 출력
    5
    
  2. 예제 2

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

    입력
    5 3
    0 4
    0 4
    0 4
    0 4
    0 4
    
    예상 출력
    50