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

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

용암 점프 2

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

요약
각 플랫폼에서 출발해 직전 점프 거리의 두 배 이상으로만 뛰어 한 플랫폼만 남는 순서의 경우 수를 셉니다. 위치가 바뀔 때마다 그 값을 다시 구합니다.
난이도

어려움10점 중 9점

유형
동적 계획법, 분할 정복, 정렬
정답자
아직 제출이 없습니다

문제

경기과학고등학교 학습실에는 때때로 용암이 찬다. 이 용암 바닥에는 1부터 NN까지 번호가 매겨진 NN개의 발판이 떠 있다. ii번 발판의 위치는 정수 aia_i로 나타내며, 발판의 위치는 모두 서로 다르다. 즉, 1≤i<j≤N1 \le i < j \le N인 정수 ii, jj에 대해 ai≠aja_i \ne a_j이다. 용암 바닥은 밟을 수 없고 발판만 밟을 수 있다. 안타깝게도 한 번 밟은 발판은 발을 떼는 순간 용암 아래로 영원히 가라앉아, 다시 밟을 수 없다.

정후는 친구 이환이가 각 발판에서 출발해 0회 이상 점프하여, 마지막에 하나의 발판만 밟고 있고 나머지 발판은 모두 가라앉은 상태가 되는 경우의 수를 알고 싶어 한다. 다만 이환이는 과하게 뛴다. 한 번 거리 xx만큼 뛴 뒤에는 그 이후의 점프 거리가 2x2x 이상이어야 한다. 처음에는 어느 거리로 뛰어도 상관없다.

ii번 발판에서 jj번 발판으로 뛰는 거리는 ∣ai−aj∣|a_i - a_j|이다. 발판이 가라앉는 순서가 다르면 서로 다른 경우로 센다. 밟지 않은 발판은 가라앉지 않는다. 발판의 이동은 누적된다.

입력

첫째 줄에 발판의 수 NN과 쿼리의 개수 QQ가 주어진다.

둘째 줄에 발판의 위치를 나타내는 NN개의 정수가 공백으로 구분되어 주어진다. ii번째 정수는 ii번 발판의 위치 aia_i이다.

다음 QQ개의 줄에는 두 정수 bib_i와 cic_i가 각각 주어진다. 이는 bib_i번 발판이 위치 cic_i로 이동함을 뜻한다.

출력

첫째 줄에 초기 상태에서, 이환이가 각 발판에서 출발해 0회 이상 점프하여 마지막에 하나의 발판만 밟고 있고 나머지 발판은 모두 가라앉은 상태가 되는 경우의 수의 합을 109+710^9 + 7로 나눈 나머지를 출력한다.

다음 QQ개의 줄에는 ii번째 이동 이후의 같은 경우의 수 합을 109+710^9 + 7로 나눈 나머지를 한 줄에 하나씩 출력한다.

제한

  • 1≤N≤40,0001 \le N \le 40{,}000
  • 0≤Q≤40,0000 \le Q \le 40{,}000
  • −1018≤ai,ci≤1018-10^{18} \le a_i, c_i \le 10^{18}
  • 1≤bi≤N1 \le b_i \le N
  • 초기 상태와 매 쿼리 이후 발판의 위치는 서로 다르다.
  • 주어지는 모든 수는 정수이다.

예제1

  1. 예제 1

    입력
    5 1
    10 1 6 7 8
    1 13
    
    예상 출력
    1
    2