만드는 중입니다

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

최종 대결

면접 대비

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

요약
연속된 웨이브 구간 중 segment 교집합 길이가 m1 이상 m2 이하인 구간의 개수를 구합니다.
난이도

보통10점 중 6점

유형
투 포인터, 슬라이딩 윈도우, 배열
정답자
아직 제출이 없습니다

문제

Neo와 Trinity는 가상 도시 샌프란시스코를 가득 메운 봇 군대와 싸우고 있다.

도시는 무한한 좌표축으로 볼 수 있다. 봇은 연속된 웨이브로 공격하며, nn개의 웨이브 각각은 봇이 빈틈없이 채운 선분이다. Neo는 ii번째 웨이브에서 봇이 [li,ri][l_i, r_i] 구간을 차지한다는 것을 알고 있다.

Trinity는 aa번째부터 bb번째까지 연속된 웨이브 묶음을 위험하다고 본다. 이 웨이브들이 차지한 구간들의 교집합 길이가 m1m_1 이상이고 m2m_2 이하일 때 그렇다. 즉 a≤ba \le b인 쌍 (a,b)(a, b)가 다음 조건을 만족하면 위험한 묶음이다.

m1≤∣⋂a≤i≤b[li,ri]∣≤m2m_1 \le \left|\bigcap_{a \le i \le b} [l_i, r_i] \right| \le m_2

예를 들어 n=3n = 3이고 [l1,r1]=[4,7][l_1, r_1] = [4, 7], [l2,r2]=[5,8][l_2, r_2] = [5, 8], [l3,r3]=[3,6][l_3, r_3] = [3, 6]이라고 하자. 처음 두 웨이브의 교집합은 [4,7]∩[5,8]=[5,7][4, 7] \cap [5, 8] = [5, 7]이며 길이는 2이다. 세 웨이브의 교집합은 [5,6][5, 6]이며 길이는 1이다. m1=2m_1 = 2이면 처음 두 웨이브는 위험한 묶음이지만 세 웨이브는 그렇지 않다. 어떤 묶음이 위험하다고 해서 그 묶음을 포함하는 더 큰 묶음도 위험한 것은 아니다.

입력

첫 줄에 공백으로 구분된 세 정수 nn, m1m_1, m2m_2가 주어진다 (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5, 0≤m1≤m2≤1090 \le m_1 \le m_2 \le 10^9).

다음 nn개의 줄에는 봇이 채운 선분의 양 끝점이 주어진다. ii번째 줄에는 ii번째 웨이브 선분의 양 끝점인 정수 lil_i와 rir_i가 공백으로 구분되어 주어진다 (0≤li<ri≤1090 \le l_i < r_i \le 10^9).

출력

위험한 연속 웨이브 묶음의 개수를 출력한다. 교집합 길이가 m1m_1 이상 m2m_2 이하인 서로 다른 묶음의 수이다.

힌트

첫 번째 테스트에서는 네 번째 웨이브를 포함하는 모든 묶음이 조건을 만족한다. 네 번째 웨이브의 길이는 1이고, 그 선분이 나머지 모든 선분에 포함되므로 교집합 길이도 1이 된다. 처음 세 웨이브의 묶음도 교집합이 [2,4][2, 4]이므로 조건을 만족한다.

두 번째 테스트에서는 세 번째 또는 네 번째 웨이브를 포함하는 모든 묶음이 조건을 만족한다. 처음 두 웨이브만으로 이루어진 묶음이나 마지막 두 웨이브만으로 이루어진 묶음은 교집합 길이가 항상 2 이상이다. 조건을 만족하는 묶음은 총 15개이다.

예제2

  1. 예제 1

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

    입력
    6 0 1
    0 4
    0 2
    0 1
    3 4
    2 4
    0 4
    
    예상 출력
    15