만드는 중입니다

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

항구 시설

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

요약
각 컨테이너를 두 구역 중 하나에 배정해서 같은 구역 안에서 후입선출 순서로 빠지는 경우의 수를 1,000,000,007로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
구간, 스택, 유니온 파인드
정답자
아직 제출이 없습니다

문제

매일 많은 컨테이너가 배로 JOI 항구에 운송된다. 이후 트럭으로 전국 각지에 운송된다.

JOI 항구는 매우 좁다. 컨테이너를 놓을 수 있는 곳은 두 구역뿐이다. 각 구역에서는 컨테이너를 세로로 원하는 만큼 쌓을 수 있다.

안전을 위해 배로 들어온 컨테이너는 두 구역 중 하나에 놓아야 한다. 이미 컨테이너가 있으면 그 위에 놓는다. 트럭으로 컨테이너를 내갈 때는 어느 한 구역에 쌓인 컨테이너의 맨 위에서 꺼내야 한다.

오늘 N개의 컨테이너가 JOI 항구에 들어온다. 모든 컨테이너는 트럭으로 나간다.

당신은 JOI 항구의 설비를 관리한다. 각 컨테이너마다 들어오는 시각과 나가는 시각을 알고 있다. 컨테이너를 놓고 꺼내는 방법의 수를 1 000 000 007로 나눈 나머지를 구하는 프로그램을 작성하라.

입력

첫째 줄에 항구에 운송되는 컨테이너의 개수 N이 주어진다.

이후 N개의 줄 중 i번째 줄에는 공백으로 구분된 두 정수 Ai, Bi가 주어진다. 이는 i번째 컨테이너가 시각 Ai에 항구에 들어오고, 시각 Bi에 트럭으로 떠난다는 뜻이다.

출력

컨테이너를 놓고 꺼내는 조건을 만족하는 방법의 수를 1 000 000 007로 나눈 나머지를 한 줄에 출력한다.

제한

  • 1 ≤ N ≤ 1 000 000.
  • 1 ≤ Ai ≤ 2N (1 ≤ i ≤ N).
  • 1 ≤ Bi ≤ 2N (1 ≤ i ≤ N).
  • Ai < Bi (1 ≤ i ≤ N).
  • 2N개의 정수 A1, ..., AN, B1, ..., BN은 모두 서로 다르다.

예제4

  1. 예제 1

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

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

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

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