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

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

철도 여행 2

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

요약
각 노선을 역 구간으로 주고 처음 K개 정차역에서만 탈 수 있다는 조건에서, Q개의 여행 각각에 필요한 최소 탑승 횟수를 구하고 불가능하면 -1을 출력한다.
난이도

어려움10점 중 9점

유형
그래프, 그리디, 동적 계획법, 이분 탐색
정답자
아직 제출이 없습니다

문제

IOI 철도 회사는 하나의 철도 노선 위에서 여러 열차를 운행한다. 일직선 위에 NN개의 역이 있고, 11번부터 NN번까지 번호가 붙어 있다. 각 ii (1≤i≤N−11 ≤ i ≤ N - 1)에 대해 ii번 역과 i+1i + 1번 역은 철도로 직접 연결되어 있다.

IOI 철도 회사는 MM개의 열차를 운행하며, 11번부터 MM번까지 번호가 붙어 있다. jj번 열차 (1≤j≤M1 ≤ j ≤ M)의 출발역은 A_jA\_j번 역이고 종착역은 B_jB\_j번 역이다. 열차는 모든 역에 정차한다. 즉 A_j<B_jA\_j < B\_j이면 jj번 열차는 A_jA\_j번 역, A_j+1A\_j + 1번 역, …\dots, B_jB\_j번 역 순서로 정차한다. A_j>B_jA\_j > B\_j이면 jj번 열차는 A_jA\_j번 역, A_j−1A\_j - 1번 역, …\dots, B_jB\_j번 역 순서로 정차한다.

JOI군은 여행자이다. 그는 QQ개의 여행 계획을 세웠다. kk번째 계획 (1≤k≤Q1 ≤ k ≤ Q)에서 그는 S_kS\_k번 역에서 T_kT\_k번 역까지 열차를 갈아타며 이동한다.

그런데 JOI군은 긴 여행에 지쳐 있다. 그는 빈 열차를 타고 자리에 앉고 싶다. 그래서 JOI군은 어떤 역에서 열차를 탈 때, 그 열차의 출발역에서 KK번째 정차역까지만 탈 수 있기로 했다. 다시 말해 A_j<B_jA\_j < B\_j이면 jj번 열차는 A_jA\_j번 역, A_j+1A\_j + 1번 역, …\dots, min⁡{A_j+K−1,B_j−1}\min{\{A\_j + K - 1, B\_j - 1\}}번 역에서만 탈 수 있다. A_j>B_jA\_j > B\_j이면 jj번 열차는 A_jA\_j번 역, A_j−1A\_j - 1번 역, …\dots, max⁡{A_j−K+1,B_j+1}\max{\{A\_j - K + 1, B\_j + 1\}}번 역에서만 탈 수 있다. JOI군은 탄 역의 다음 역부터 종착역까지 중 한 역에서 내린다.

이 조건에서 JOI군은 열차를 타는 횟수를 최소화하려 한다.

IOI 철도 회사의 열차 정보와 JOI군의 계획이 주어졌을 때, 각 계획마다 JOI군이 그 계획을 달성하는 데 필요한 최소 열차 탑승 횟수를 계산하는 프로그램을 작성하라.

입력

표준 입력에서 다음 데이터를 읽는다. 주어지는 값은 모두 정수이다.

\begin{align\*}\&N\,K \\ \& M \\ \& A\_1\,B\_1 \\ \& A\_2\,B\_2 \\ \& \vdots \\ \& A\_M\,B\_M \\ \& Q \\ \& S\_1\,T\_1 \\ \& S\_2\,T\_2 \\ \& \vdots \\ \& S\_Q\,T\_Q\end{align\*}

출력

표준 출력에 QQ개의 줄을 출력한다. kk번째 줄 (1≤k≤Q1 ≤ k ≤ Q)에는 JOI군이 kk번째 계획을 달성하는 데 필요한 최소 열차 탑승 횟수를 출력한다. kk번째 계획을 달성할 수 없으면 -1을 출력한다.

제한

  • 2≤N≤100 0002 ≤ N ≤ 100\,000.
  • 1≤K≤N−11 ≤ K ≤ N - 1.
  • 1≤M≤200 0001 ≤ M ≤ 200\,000.
  • 1≤A_j≤N1 ≤ A\_j ≤ N (1≤j≤M1 ≤ j ≤ M).
  • 1≤B_j≤N1 ≤ B\_j ≤ N (1≤j≤M1 ≤ j ≤ M).
  • A_j≠B_jA\_j \ne B\_j (1≤j≤M1 ≤ j ≤ M).
  • (A_j,B_j)≠(A_k,B_k)(A\_j , B\_j) \ne (A\_k, B\_k) (1≤j<k≤M1 ≤ j < k ≤ M).
  • 1≤Q≤50 0001 ≤ Q ≤ 50\,000.
  • 1≤S_k≤N1 ≤ S\_k ≤ N (1≤k≤Q1 ≤ k ≤ Q).
  • 1≤T_k≤N1 ≤ T\_k ≤ N (1≤k≤Q1 ≤ k ≤ Q).
  • S_k≠T_kS\_k \ne T\_k (1≤k≤Q1 ≤ k ≤ Q).
  • (S_k,T_k)≠(S_l,T_l)(S\_k, T\_k) \ne (S\_l , T\_l) (1≤k<l≤Q1 ≤ k < l ≤ Q).

예제4

  1. 예제 1

    입력
    5 2
    2
    5 1
    3 5
    3
    5 3
    3 2
    2 1
    
    예상 출력
    1
    2
    -1
    
  2. 예제 2

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

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

    입력
    12 1
    5
    1 7
    10 12
    3 5
    8 10
    5 9
    7
    2 11
    5 8
    3 12
    4 6
    1 9
    9 10
    1 4
    
    예상 출력
    -1
    1
    4
    -1
    2
    -1
    1