셔플

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

요약
1부터 n까지 순서대로 놓인 카드 더미에 shuffle 연산을 m번 적용한 뒤, 위에서 p번째부터 q번째 사이에 있는 카드 중 r 이하인 것의 개수를 센다. n이 10억까지 커서 카드 배열을 직접 만들 수 없다.
난이도

보통10점 중 7점

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

문제

11부터 nn까지 번호가 적힌 카드 nn장이 있다. 처음에는 맨 위가 번호 11인 카드, 위에서 두 번째가 번호 22인 카드, …, 맨 아래가 번호 nn인 카드가 되도록 차례로 쌓아 카드 더미를 만든다.

카드 더미의 초기 상태

이 카드 더미에 대해 다음과 같은 「셔플(x,y)(x, y)」연산을 수행하여 카드를 재배열한다. 여기서 x,yx, y는 1≤x<y<n1 \le x < y < n을 만족하는 정수이다.

  • 셔플(x,y)(x, y)
    • nn장의 카드를 맨 위에서부터 xx번째까지의 카드로 이루어진 더미 AA, x+1x+1번째부터 yy번째까지의 카드로 이루어진 더미 BB, y+1y+1번째부터 nn번째까지의 카드로 이루어진 더미 CC의 세 더미로 나눈다. 그런 다음 더미 AA 위에 더미 BB를 얹고, 다시 그 위에 더미 CC를 얹는다.

예를 들어 순서대로 놓인 99장의 카드에 「셔플(3,5)(3, 5)」을 수행하면, 카드에 적힌 번호는 위에서부터 차례로 6,7,8,9,4,5,1,2,36, 7, 8, 9, 4, 5, 1, 2, 3이 된다.

셔플(3, 5)의 예

처음 상태에서 mm번의 셔플 「셔플(x1,y1)(x_1, y_1)」, 「셔플(x2,y2)(x_2, y_2)」, …, 「셔플(xm,ym)(x_m, y_m)」을 순서대로 수행한 뒤의 카드 더미에서, 위에서부터 세어 pp번째부터 qq번째까지의 카드 중 번호가 rr 이하인 카드가 몇 장 포함되어 있는지 구하는 프로그램을 작성하라.

입력

입력은 m+3m+3개의 줄로 이루어진다.

  • 11번째 줄: 카드의 장수 nn (3≤n≤1093 \le n \le 10^9).
  • 22번째 줄: 셔플 횟수 mm (1≤m≤50001 \le m \le 5000).
  • 33번째 줄: 정수 p,q,rp, q, r (1≤p≤q≤n1 \le p \le q \le n, 1≤r≤n1 \le r \le n).
  • i+3i+3번째 줄 (1≤i≤m1 \le i \le m): 공백으로 구분된 두 정수 xi,yix_i, y_i (1≤xi<yi<n1 \le x_i < y_i < n).

출력

mm번의 셔플 후의 카드 더미에서, 위에서부터 세어 pp번째부터 qq번째까지의 카드 중 번호가 rr 이하인 카드의 장수를 출력하라.

힌트

99장의 더미에 「셔플(3,5)(3, 5)」을 수행하면 카드는 위에서부터 6,7,8,9,4,5,1,2,36, 7, 8, 9, 4, 5, 1, 2, 3이 된다. 위에서 33번째부터 77번째까지 중 번호가 44 이하인 카드는 번호 44와 번호 11의 22장이다.

1212장의 더미에 「셔플(3,8)(3, 8)」, 「셔플(2,5)(2, 5)」, 「셔플(6,10)(6, 10)」을 차례로 수행하면 카드는 위에서부터 9,10,3,11,12,4,5,6,7,8,1,29, 10, 3, 11, 12, 4, 5, 6, 7, 8, 1, 2가 된다. 위에서 33번째부터 88번째까지 중 번호가 55 이하인 카드는 33장이다.

예제2

  1. 예제 1

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

    입력
    12
    3
    3 8 5
    3 8
    2 5
    6 10
    
    예상 출력
    3