만드는 중입니다

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

구간들

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

요약
주어진 구간들의 비어 있지 않은 모든 부분집합에 대해 교집합 길이의 합과 길이가 1 이상인 교집합의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 6점

유형
구간, 정렬, 조합론, 수학
정답자
아직 제출이 없습니다

문제

pp 이상 qq 이하인 모든 실수의 집합을 \[p,q]\[p,q]로 나타낸다. 이를 구간이라고 한다. p>qp > q일 수 있으며, 이때 집합은 공집합이므로 주의한다.

kk개의 구간 \[p1,q1]\[p_1, q_1], \[p2,q2]\[p_2, q_2], ⋯\cdots, \[pk,qk]\[p_k,q_k]의 교집합은 P=max⁡(p1,p2,⋯ ,pk)P = \max{(p_1, p_2, \cdots , p_k)} 이상 Q=min⁡(q1,q2,⋯ ,qk)Q = \min{(q_1, q_2, \cdots , q_k)} 이하인 집합이므로, 구간 \[P,Q]\[P,Q]로 나타낼 수 있다.

구간 \[p,q]\[p,q]의 길이는 max⁡(q−p,0)\max{(q-p, 0)}으로 정의한다.

NN개의 구간 I1I_1, I2I_2, ⋯\cdots, INI_N이 주어진다. 이때 Ii=\[si,ei]I_i = \[s_i,e_i]이다. 한 개 이상의 구간을 선택하는 2N−12^N-1가지 방법 각각에 대해, 선택된 구간들의 교집합 길이의 합과 길이가 11 이상인 교집합의 개수를 구하는 프로그램을 작성하라.

입력

첫 번째 줄에 구간의 개수를 나타내는 정수 NN (1≤N≤1051 \le N \le 10^5)이 주어진다.

다음 NN개의 줄의 ii번째 줄에는 IiI_i의 정보를 나타내는 두 정수 sis_i, eie_i (0≤si,ei≤1090 \le s_i, e_i \le 10^9)가 공백 하나로 구분되어 주어진다. 즉 Ii=\[si,ei]I_i = \[s_i, e_i]이다.

출력

첫 번째 줄에 한 개 이상의 구간을 선택하는 2N−12^N-1가지 방법 전부에 대해, 선택된 구간들의 교집합 길이의 합과 길이가 11 이상인 교집합의 개수를 공백 하나로 구분하여 출력한다. 이 수들은 매우 클 수 있으므로, 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    4
    1 4
    1 3
    2 4
    5 6
    
    예상 출력
    14 8